如何编写Python程序从多键字典中查询指定动物对应的ID值
代码错误说明
你的代码存在3个核心逻辑问题,无法实现需求:
- 匹配范围错误:
animal_dict.values()返回的是三个顶层嵌套字典(动物名字典、ID字典、园区位置字典),并非具体的动物名称字符串,拿用户输入的动物名和这三个字典对象做匹配,永远得不到正确的匹配结果。 - 取值路径错误:
animal_dict的顶层键只有Animal、ID Number、Zoo Location三个,没有任何以动物名直接作为键的条目,哪怕匹配逻辑写对,直接调用animal_dict[enter_animal_name]也会触发KeyError报错。 - 缺失关联逻辑:当前字典的存储规则是相同数字索引对应同一条记录的不同属性,比如
Animal下索引0对应长颈鹿,ID Number下索引0就是长颈鹿的ID,你的代码没有实现跨子字典的同索引关联逻辑。
正确实现方案
先预构建动物名到ID的映射关系,再做查询判断,代码如下:
animal_dict = { 'Animal': { 0: 'Giraffe', 1: 'Kangaroo', 2: 'Koala', 3: 'Lion', 4: 'Walrus' }, 'ID Number': { 0: '121', 1: '234', 2: '673', 3: '543', 4: '134' }, 'Zoo Location': { 0: 'Chicago', 1: 'New York', 2: 'Seattle', 3: 'Tulsa', 4: 'Santa Monica' } } # 构建动物名 -> ID的查询映射 animal_to_id = {} for idx, name in animal_dict['Animal'].items(): animal_to_id[name] = animal_dict['ID Number'][idx] enter_animal_name = input("Enter Animal Name: ") if enter_animal_name in animal_to_id: print(f"Animal ID Number: {animal_to_id[enter_animal_name]}") else: print("Animal does not exist in database")
效果说明
- 输入字典内存在的动物名(如
Lion),仅返回对应ID543,不会输出园区位置信息 - 输入不存在的动物名,直接返回不存在的提示
- 预构建映射的方式查询效率更高,数据量较大时优势更明显。
内容的提问来源于stack exchange,提问作者swimmeryay15
相关产品推荐
相关产品推荐

