Python字典计数开发疑问:变量必要性及代码补全咨询
动物输入统计程序问题解答
你的疑问解答
1. 是否需要为字典的keys和values单独创建变量?
不需要。字典本身就提供了直接操作键值对的方法:
- 判断动物是否已存在,直接用
if 动物名 in animals_dict即可,无需单独存储keys列表 - 获取或修改对应计数,直接用
animals_dict[动物名]或者animals_dict.get(动物名, 默认值),无需单独维护values变量
额外创建keys/values变量只会增加代码冗余,完全没必要。
2. 是否需在if语句下添加animals_dict[animals] = name这类代码?
不需要,而且name这个变量根本没定义,这么写会报错。正确的逻辑应该是:
- 如果动物不在字典中:添加该动物为key,对应计数设为1(即
animals_dict[animals] = 1) - 如果动物已在字典中:把对应计数加1(即
animals_dict[animals] += 1)
或者可以用更简洁的写法,省去if-else判断:
animals_dict[animals] = animals_dict.get(animals, 0) + 1
get()方法如果找不到key会返回0,加1后正好实现首次输入设为1、重复输入计数加1的需求。
作业要求(翻译自原文)
字典更新作业:编写程序提示用户输入动物,将动物作为key存入字典,对应value记录输入次数。
编写函数get_animals():创建空字典animals_dict = dict();编写循环提示用户输入动物字符串;若动物已作为key存在,对应value加1;若不存在,则添加为key并设value为1。
编写函数most_seen_animal(),仅接收字典参数,返回出现次数最多的动物。
注意:字典是键值对集合,可通过keys()获取键,通过animals_dict.get(k)访问value。需编写main函数测试功能,也可通过单元测试测试most_seen_animal()。
完整实现代码
def get_animals(): animals_dict = dict() print("请输入动物名称,输入空字符串结束输入:") while True: animal = input("输入动物:").strip() # 输入空字符串时退出循环 if not animal: break # 更新计数:存在则加1,不存在则设为1 animals_dict[animal] = animals_dict.get(animal, 0) + 1 return animals_dict def most_seen_animal(animal_counts): if not animal_counts: return None # 找出value最大的key return max(animal_counts.items(), key=lambda x: x[1])[0] def main(): animal_data = get_animals() if animal_data: print(f"动物输入统计结果:{animal_data}") most_seen = most_seen_animal(animal_data) print(f"出现次数最多的动物是:{most_seen},次数为:{animal_data[most_seen]}") else: print("没有输入任何动物数据") if __name__ == "__main__": main()
内容的提问来源于stack exchange,提问作者skeekcat
相关产品推荐
相关产品推荐

