You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 17:05:25