Python动态字典重复值统计及作业需求实现代码求助
问题根因
- Python 原生字典不允许存在重复键,你在定义字典字面量时写的重复键会被后写入的值直接覆盖。从你给出的运行输出也能看出,两个初始化字典里最终都只保留了每个键的最后一个值,所有你提前写的重复键内容已经被丢弃,自然无法统计到重复数据。
- 原有统计逻辑是筛选出对应了多个不同键的值,但你最终保留的字典里所有值都只对应一个键,所以返回空集。
修正实现方案
1. 调整数据存储结构
如果要保留重复键的所有键值对,不要直接用原生字典存储,改用(键, 值)元组组成的列表,就能完整保存所有输入数据,动态添加内容时直接调用append方法即可,天然支持重复键、重复值。
2. 完整可运行代码
from collections import defaultdict # 存储所有键值对(支持动态新增、支持重复键/重复值) kv_list = [ ("Name", "John"), ("Age", 43), ("Name", "Mark"), ("Age", 43), ("Occupation", "Plumber"), ("Occupation", "Teacher"), ("Age", 35), ("Age", 43) ] # 统计每个值对应的所有键 value_to_keys = defaultdict(list) for key, value in kv_list: value_to_keys[value].append(key) # 输出重复取值的统计结果 print("重复取值统计结果:") for value, keys in value_to_keys.items(): count = len(keys) if count > 1: print(f"取值 *{value}* 共出现 {count} 次,关联的所有键为:{keys}")
3. 运行输出示例
重复取值统计结果: 取值 *43* 共出现 3 次,关联的所有键为:['Age', 'Age', 'Age']
内容的提问来源于stack exchange,提问作者tonyalmeida24
相关产品推荐
相关产品推荐

