如何对Python嵌套字典内层相同键的数值进行汇总求和
实现方案
你需要统计嵌套字典中所有内层字典相同键的数值总和,以下是可直接运行的Python实现:
首先定义你提供的原始数据:
data = { 'rekless': {'C': 2.0, 'H': 4.0, 'J': 0.0}, 'bwipo': {'C': 3.0, 'D': 4.0, 'H': 0.0}, 'wunder': {'D': 10.0, 'G': 20.0, 'H': 0.50}, 'caps': {'D': 3.1, 'I': 2.0, '9J': 1.0, '10K': 2.0}, 'jankos': {'D': 3.2, 'I': 2.0, 'J': 1.0, 'K': 2.0} }
方法1:基础遍历(无第三方依赖)
不需要导入任何库,逻辑最直观:
sum_result = {} # 遍历所有内层字典 for inner_dict in data.values(): for key, value in inner_dict.items(): if key in sum_result: sum_result[key] += value else: sum_result[key] = value print(sum_result)
运行输出:{'C': 5.0, 'H': 4.5, 'J': 1.0, 'D': 20.3, 'G': 20.0, 'I': 4.0, '9J': 1.0, '10K': 2.0, 'K': 2.0}
方法2:使用collections.defaultdict简化写法
不需要手动判断键是否存在:
from collections import defaultdict sum_result = defaultdict(float) for inner_dict in data.values(): for key, value in inner_dict.items(): sum_result[key] += value # 可选操作:转换为普通字典 sum_result = dict(sum_result) print(sum_result)
方法3:使用collections.Counter一行完成
Counter原生支持加法运算,写法最简洁:
from collections import Counter sum_result = dict(sum(map(Counter, data.values()), Counter())) print(sum_result)
注意:该方法仅适合值为数字的场景,刚好匹配当前需求。
内容的提问来源于stack exchange,提问作者ObamaVEVO
相关产品推荐
相关产品推荐

