我有两个词典列表:
rich = [
{'currency': 'USD', 'value': 100},
{'currency': 'EUR', 'value': 110},
{'currency': 'USD', 'value': 120},
{'currency': 'GBP', 'value': 130},
]
poor = [
{'currency': 'USD', 'value': 10},
{'currency': 'AED', 'value': 20},
]
我如何将两者结合起来才能得到:
rich_and_poor = [
{'currency': 'USD', 'value': 110}, # +10
{'currency': 'EUR', 'value': 110},
{'currency': 'GBP', 'value': 130},
{'currency': 'AED', 'value': 20} # new dictionary
]
在
from collections import Counter
很有用,因为它可以使用相同的键对词典值进行求和,但我仍然无法弄清楚如何使用dictionairies列表。
x = {'value': 123}
y = {'value': 2}
Counter(x) + Counter(y) = {'value': 125}
答案 0 :(得分:1)
更合乎逻辑的结构是拥有一个字典,其中货币为键,值为值。让我们使用defaultdict创建一个(以便新键自动开始为0):
currencies = defaultdict(int)
现在添加你的词组:
for currencydict in rich + poor:
currencies[currencydict['currency']] += currencydict['value']
产生了类似的东西(不一定是相同的顺序):
{
'USD': 230,
'EUR': 110,
'GBP': 130,
'AED': 20
}
现在,如果你真的需要,将它转换回像你这样的列表:
rich_and_poor = [{'currency': key, 'value': value} for key, value in currencies.items()]