[英]How to sum dictionaries values with same key inside two list?
我有兩個帶有字典的清單:
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
很有用,因為它可以使用相同的鍵求和字典值,但是我仍然不知道如何使用字典列表來做到這一點。
x = {'value': 123}
y = {'value': 2}
Counter(x) + Counter(y) = {'value': 125}
為此,更合乎邏輯的結構是擁有一個字典,其中貨幣作為鍵,值作為值。 讓我們使用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()]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.