python - 查找dict的dict中所有值的总和
问题描述
我有像下面这样的字典,
{
'AAA':
{'NKA': 2, 'total': 4, 'Cleared': 2, 'NRM-TY': 3, 'KLAOO': 1, 'COREI': 1, 'MFTT': 2},
'DDD':
{'Cleared': 2, 'total': 1, 'KLAOO': 1, 'COREI': 1, 'NRM-TY': 1},
'NNN':
{'Cleared': 1, 'total': 1, 'KLAOO': 4,},
'AANN':
{'Cleared': 1, 'total': 1, 'NRM-TY': 2}
}
我需要得到所有键值的总和,如下所示,
{'NKA': 2, 'total': 7, 'Cleared': 6, 'NRM-TY': 6, 'KLAOO': 6, 'COREI': 2, 'MFTT': 2}
我可以使用下面的代码来实现这一点,
result = {}
for k,v in a.items():
for p,q in v.items():
if p in result:
result[p] += q
else:
result[p] = q
我只是想知道是否有任何简单的方法可以做到这一点......
解决方案
利用collections.Counter
前任:
from collections import Counter
data = {
'AAA':
{'NKA': 2, 'total': 4, 'Cleared': 2, 'NRM-TY': 3, 'KLAOO': 1, 'COREI': 1, 'MFTT': 2},
'DDD':
{'Cleared': 2, 'total': 1, 'KLAOO': 1, 'COREI': 1, 'NRM-TY': 1},
'NNN':
{'Cleared': 1, 'total': 1, 'KLAOO': 4,},
'AANN':
{'Cleared': 1, 'total': 1, 'NRM-TY': 2}
}
result = Counter()
for _, v in data.items():
result += Counter(v)
print(result)
输出:
Counter({'total': 7, 'NRM-TY': 6, 'Cleared': 6, 'KLAOO': 6, 'NKA': 2, 'COREI': 2, 'MFTT': 2})
推荐阅读
- c# - 我们可以在这里删除重复的字符串元素吗?林克 C#
- javascript - Filepond gridlayout与图像调整大小冲突
- android - Android 计费库 v4 不返回 SKU 详细信息
- go - go rpc 的参数。他们什么时候应该是指针?
- dart - 在 Dart 的队列中按执行顺序异步返回同步调用的 Futures
- html - 当我在我的关于部分引入背景颜色时,图像消失后(图像:之后是黄色边框)
- flutter - Riverpod:“在构建期间调用了 setState() 或 markNeedsBuild()。”
- python - 引用变量 'ro_sub_ros.$is_not_null' 的级别为 1,而 Parquet 列的对应字段路径有 0 个重复字段
- ansible - 如果找不到东西,如何使查找立即失败?
- reactjs - 如何在 redux 工具包中返回默认状态?