2017-02-24 110 views
-3

如何添加兩個字典的值? 例如:Python - 添加兩個字典

a = {'a':10,'b':11,'c':20} 
b = {'a':1,'b':1,'c':1} 

結果必然是

c = {'a':11,'b':12,'c':21} 
+0

通常,當你問一個問題,你應該有你有什麼嘗試過,爲什麼它不起作用。雖然有些人可能很樂意爲你寫代碼,但堆棧溢出不是代碼寫入服務。 – Aaron

回答

0

下一頁有的請出示一些努力..

a = {'a':10,'b':11,'c':20} 
b = {'a':1,'b':1,'c':1} 

c = {k: a[k] + b[k] for k in a} 
print(c) # {'c': 21, 'b': 12, 'a': 11} 

以上工作正常,如果我們假設ab按鍵相同。

如果不是的話,你可以嘗試以下方法:

a = {'a': 10, 'b': 11, 'c': 20, 'h': 5} 
b = {'a': 1, 'b': 1, 'c': 1, 'd': 12} 

all_keys = set(a.keys()) # in Python 3 it can be simplified as `all_keys = set(a)` 
all_keys.update(b.keys()) # in Python 3 it can be simplified as `all_keys.update(b)` 
c = {k: a.get(k, 0) + b.get(k, 0) for k in all_keys} 
print(c) # {'c': 21, 'h': 5, 'a': 11, 'b': 12, 'd': 12} 

請注意,我用get兩個詞典來跳過鍵的存在的檢查。

+0

如果'b'中有一個不在'a'中的鍵,該怎麼辦? –

2

您可以輕鬆地通過使用計數器類集合庫爲前加兩個庫:

from collections import Counter 

a = {'a':10,'b':11,'c':20} 
b = {'a':1,'b':1,'c':1} 

a = Counter(a) 
b = Counter(b) 
c = dict(a + b) 
print c 

輸出

{'c': 21, 'b': 12, 'a': 11}