python - 如何在 Python 中合并和求和字典值
问题描述
我想用相同的键总结多个 Python 字典中的所有值,并保持其他值不变,就好像它们有不同的键一样。输入字典看起来像这样:
dict1 = {'A':{'a':1, 'b':2, 'c':0}, 'B':{'a':3, 'b':0, 'c':0}}
dict2 = {'A':{'a':3, 'c':1, 'd':5}, 'B':{'a':2, 'b':0, 'c':1}, 'C':{'a':1, 'b':2, 'c':1}}
输出:
dict3 = {'A':{'a':4, 'b':2, 'c':1, 'd':5}, 'B':{'a':5, 'b':0, 'c':1}, 'C':{'a':1, 'b':2, 'c':1}}
有没有办法只使用标准库来实现这个结果?这也应该适用于 2 个以上的字典。
解决方案
非常依赖结构,但是类似于...
dicts = [
{'A':{'a':1, 'b':2, 'c':0}, 'B':{'a':3, 'b':0, 'c':0}},
{'A':{'a':3, 'c':1, 'd':5}, 'B':{'a':2, 'b':0, 'c':1}, 'C':{'a':1, 'b':2, 'c':1}}
]
odict = {}
for d in dicts:
for dk in d.keys():
if dk not in odict:
odict[dk] = {}
for inner_dk in d[dk].keys():
if inner_dk not in odict[dk]:
odict[dk][inner_dk] = d[dk][inner_dk]
else:
odict[dk][inner_dk] += d[dk][inner_dk]
print(odict)
推荐阅读
- python - 如何缩放和居中 X 轴
- scala - Spark:根据前几行中的开始时间和持续时间值以 30 分钟为间隔计算事件结束时间
- django - 从下拉列表分配时创建新对象
- ios - 尝试重新加载视图控制器以更新当前主题
- c++ - tbb::parallel_for 是否有中断命令
- firebase - 按特定文档查询集合
- xml - XSLT:如何匹配(在模板中)两个不同的元素
- node.js - 类不继承属性初始化状态
- php - 如何设置 Storage::disk('s3') 配置不在环境中,而是在文件中?
- sockets - 如何通过客户端的socketDataArrived方法正确接收数据