簡體   English   中英

是否可以比較兩個字典,如果鍵相同,則其值將加在一起

[英]is it possible to compare two dictionary and if the keys are the same then its values will add together

我想知道如何比較 python 中的 2 個字典以啟用並創建 1 個字典,如果兩個字典恰好具有相同的鍵,那么它將是新字典中的 1 個鍵,並且將添加相同鍵的值一起,將是 1 鍵的新值,例如。

def view_cart():
    if shopping_cart.keys() in shopping_cart_2.keys:
        new_shop = shopping_cart.values + shopping_cart_2.values 
        print(new_shop)

shopping_cart = {'milk': 1, 'eggs': 1, 'bread': 2}
shopping_cart_2 = {'milk': 1 ,'coke': 3, 'oyster sauces': 1}

將兩組鍵組合成set並取並集; 然后迭代該聯合集並添加每個字典的計數。

>>> shopping_cart = {'milk': 1, 'eggs': 1, 'bread': 2}
>>> shopping_cart_2 = {'milk': 1 ,'coke': 3, 'oyster sauces': 1}
>>> {key: shopping_cart.get(key, 0) + shopping_cart_2.get(key, 0) for key in set(shopping_cart) | set(shopping_cart_2)}
{'coke': 3, 'milk': 2, 'eggs': 1, 'bread': 2, 'oyster sauces': 1}

是的。 你可以這樣做。

python 中有一個數據結構類型Set ,它是數學概念Sets的對應物。 您可以使用它來創建兩個字典中所有不同鍵的列表。

shopping_cart = {'milk': 1, 'eggs': 1, 'bread': 2}
shopping_cart_2 = {'milk': 1 ,'coke': 3, 'oyster sauces': 1}
d1k = set(shopping_cart)
d2k = set(shopping_cart_2)
allKeys = d1k | d2k

現在您可以在for循環中使用簡單的if..else語句。

for i in allKeys:
    if i not in shopping_cart_2:
        pass
    elif i not in shopping_cart:
        shopping_cart[i] = shopping_cart_2[i]
    else:
        shopping_cart[i] += shopping_cart_2[i]

上面的代碼通過修改原始的shopping_cart字典來創建最終需要的字典。 現在您可以刪除shopping_cart_2字典。

del shopping_cart_2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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