python - 如何在列表中对具有相同键的字典值求和?
问题描述
我有这个清单:
list1 = [
{'currency': 'USD', 'value': 10},
{'currency': 'USD', 'value': 12},
{'currency': 'EUR', 'value': 11},
{'currency': 'EUR', 'value': 15},
{'currency': 'EUR', 'value': 17},
{'currency': 'GBP', 'value': 13},
]
如何组合字典以便从 list1 中获取此列表?
list2 = [
{'currency': 'USD', 'value': 22},
{'currency': 'EUR', 'value': 43},
{'currency': 'GBP', 'value': 13},
]
解决方案
使用字典:
d = {}
for x in list1:
c, v = x["currency"], x["value"]
d[c] = d.get(c, 0) + v
# {'EUR': 43, 'GBP': 13, 'USD': 22}
然后直接使用该字典(我会推荐)或将其转换回您的字典列表格式,使用列表理解:
>>> [{"currency": k, "value": v} for k, v in d.items()]
[{'currency': 'USD', 'value': 22},
{'currency': 'EUR', 'value': 43},
{'currency': 'GBP', 'value': 13}]
推荐阅读
- swift - 监控信标时,DidEnterRegion 和 DidExitRegion 被多次调用
- javascript - JS:查找嵌套数组的索引并从数组中取出键值
- python - Numpy - Matplotlib - 日志 x 轴上重叠标签的问题
- angular - Angular 11,Router-outlet 并在另一个孩子内部路由孩子。不显示组件
- node.js - PUT 请求 404 未找到错误邮递员?Node.js 快递
- react-native - panResponder 在屏幕上有两次触摸时继续捕获
- r - R studio Javascript Alert R 遇到致命错误
- microsoft-teams - 无法使用 Microsoft Teams 基本个人选项卡
- sql - SQL:如何计算有多少用户从两个不同的表中获得了超过 500 个图像
- python-3.x - 如何在 Django 中使用 Field.disabled