python - Python对具有多个元素的字典列表的键求和
问题描述
我的问题与这个问题有些不同。我有一个字典列表如下:
[{'Name': 'A', 'amt1':101, 'amt2':102, 'amt3':103},
{'Name': 'B', 'amt1':201, 'amt2':202, 'amt3':203},
{'Name': 'A', 'amt1':301, 'amt2':302, 'amt3':303},
{'Name': 'C', 'amt1':401, 'amt2':402, 'amt3':403},
{'Name': 'C', 'amt1':501, 'amt2':502, 'amt3':503},
{'Name': 'A', 'amt1':601, 'amt2':602, 'amt3':603}]
我想为每个名称求和 amt 并在 dict 列表中得到以下结果:
[{'Name':'A', 'amt1':1003, 'amt2':1006, 'amt3':1009},
{'Name':'B', 'amt1':201, 'amt2':202, 'amt3':203},
{'Name':'C', 'amt1':902, 'amt2':904, 'amt3':906}]
解决方案
要将链接的答案扩展到多个键:
def sum_dicts(lst_of_dicts):
out = {}
for d in lst_of_dicts:
for k in d.keys() - {"Name"}:
out.setdefault(d["Name"], {"Name": d["Name"]}).setdefault(k, 0)
out[d["Name"]][k] += d[k]
return list(out.values())
print(sum_dicts(lst))
印刷:
[
{'Name': 'A', 'amt2': 1006, 'amt1': 1003, 'amt3': 1009},
{'Name': 'B', 'amt2': 202, 'amt1': 201, 'amt3': 203},
{'Name': 'C', 'amt2': 904, 'amt1': 902, 'amt3': 906}
]
推荐阅读
- c# - 报告查看器未冻结 ssrs 中的表头
- javascript - 画布中的 styleStroke 不改变描边颜色
- ibm-watson - 关键字提取如何工作?
- android-app-indexing - 我们无法将您的应用与所选域相关联
- javascript - 如何在 JavaScript 中从此文本中选择可用
- javascript - 如何在javascript中将30分钟添加到指定时间(最小和最大时间)
- dart - 颤振补间基本动画在“FutureBuilder”中不起作用
- javascript - 第二次访问屏幕时 React Native null is not an object (evalating '_this2.state.data') 错误
- swift - 为什么 UIStackView 调整排列的子视图的大小?
- logback - Flink 日志记录限制:如何将日志记录配置传递给 flink 作业