如何统计0-10范围内列表元素频率 未输入元素默认计0有序输出
实现方案
你提前初始化好0-10全键、默认值为0的字典已经完成了核心准备工作,不需要额外使用仅统计已出现值的频次工具,按以下逻辑就能完成需求:
- 遍历存储所有输入的列表,每读到一个合法数字,就把字典中对应数字的计数值加1
- 输出时不要直接遍历字典的键,固定按
0到10的顺序取字典中对应键的值输出,既能保证顺序正确,也不会漏展示未输入过的数字
完整可运行代码
# 初始化存储输入的列表、0-10区间默认值为0的频数字典 input_records = [] frequency = {num: 0 for num in range(11)} # 持续接收用户输入 while True: content = input() # 非数字输入时终止录入,可根据你的实际终止规则调整 if not content.isdigit(): break current_num = int(content) if 0 <= current_num <= 10: input_records.append(current_num) else: # 输入超出0-10范围时终止录入 break # 统计频次 for num in input_records: frequency[num] += 1 # 按固定顺序输出结果 for i in range(11): print(f"{i} - {frequency[i]}")
注意事项
- 不用纠结网上找的那些只统计已输入值的频次代码,你提前初始化好全量默认0的字典,直接遍历输入累加计数是最适配需求的写法,不需要额外给未出现的数字补0值
- 不建议直接用
collections.Counter统计列表频次:Counter只会返回实际出现过的数字的统计结果,后续还需要手动补全未出现数字的0值,反而增加冗余步骤 - 固定遍历
range(11)取数输出是兼容性最好的方案,不受Python版本字典默认排序规则影响,100%保证输出顺序正确、覆盖0-10全区间
内容的提问来源于stack exchange,提问作者Person guyzz
相关产品推荐
相关产品推荐

