首页 > 解决方案 > 如何在列表中对具有相同键的字典值求和?

问题描述

我有这个清单:

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},
]

标签: python

解决方案


使用字典:

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}]

推荐阅读