簡體   English   中英

如何將兩個列表中具有相同鍵的字典值相加?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM