如何在循环迭代中累加更新Python字典summary的键值对?
字典键值累加更新的解决方案
Python的dict.update()方法会直接覆盖已有键的值,所以没法实现你要的累加需求。以下是几种可行的解决方法:
方法1:手动遍历键值对(无需额外模块)
直接遍历临时字典的键值对,利用字典的get()方法处理不存在的键(默认返回0),再完成值的累加:
summary = {} # 第一次迭代 temp = {'a': 10, 'b': 50} for key, value in temp.items(): summary[key] = summary.get(key, 0) + value # 第二次迭代 temp = {'a': 40, 'b': 20, 'c': 100} for key, value in temp.items(): summary[key] = summary.get(key, 0) + value print(summary) # 输出: {'a': 50, 'b': 70, 'c': 100}
方法2:使用collections.defaultdict(更简洁)
导入defaultdict并指定默认值为整数0,不存在的键会自动初始化为0,直接累加即可:
from collections import defaultdict summary = defaultdict(int) # 第一次迭代 temp = {'a': 10, 'b': 50} for key, value in temp.items(): summary[key] += value # 第二次迭代 temp = {'a': 40, 'b': 20, 'c': 100} for key, value in temp.items(): summary[key] += value # 如需转为普通字典,执行:summary = dict(summary) print(summary) # 输出: defaultdict(<class 'int'>, {'a': 50, 'b': 70, 'c': 100})
方法3:封装成通用函数(适合循环场景)
如果需要在多次循环中重复调用,可以封装成函数:
def accumulate_dict(target, source): for k, v in source.items(): target[k] = target.get(k, 0) + v summary = {} accumulate_dict(summary, {'a': 10, 'b': 50}) accumulate_dict(summary, {'a': 40, 'b': 20, 'c': 100}) print(summary) # 输出: {'a': 50, 'b': 70, 'c': 100}
内容的提问来源于stack exchange,提问作者planetex
相关产品推荐
相关产品推荐

