2016-03-15 103 views
-4

比如我有兩個類型的字典:如何從不同的字典基礎上增加價值的關鍵

a = {'a':1,'b':0, 'c':5} 
b = {'d':4,'a':2} 

雖然update()函數可以刷新舊的價值觀念,像

a.update(b) 

將返回

{'a': 2, 'b': 0, 'c': 5, 'd': 4} 

但我想要他們的總和,換句話說,我想要

{'a': 3, 'b': 0, 'c': 5, 'd': 4} 

這樣的值「a」既是字典

我如何能做到這一點的總和?

+4

*我該怎麼做?*通過編寫代碼*任何人都可以爲我編寫代碼?*不,SO不適用於gimmetehcodez。做一些研究和復出,我們將非常樂意幫助你 –

+0

看看'collections.defaultdict'。 – asimoneau

回答

0

collections.Counter可能會給你想要的東西。 collections.Counter.update()文檔說:

像dict.update(),但增加了計數,而不是替換它們。

from collections import Counter 

a = Counter({'a':1, 'b':0, 'c':5}) 
b = {'d':4, 'a':2} 

a.update(b) 

print a 

結果:

Counter({'c': 5, 'd': 4, 'a': 3, 'b': 0}) 
+0

謝謝!這是我想要的,因爲我剛剛接觸到這個,所以對於我的模糊描述感到抱歉。 – Stryx

1

下面的代碼將更新a你想要的方式:

a = {'a': 1, 'b': 0, 'c': 5} 
b = {'d': 4, 'a': 2} 

for k, v in b.iteritems(): 
    a[k] = a.get(k, 0) + v 

print a # {'a': 3, 'c': 5, 'b': 0, 'd': 4} 
0

您可以爲您的字典一個新的類,並實現功能 __add__(destDictionary,DictionaryToAdd) #The code for adding them

現在,如果你在一個類中創建2個Dictionary對象並將它們添加,它將在destDictionary中返回它們的總和,例如:

a=DictionaryClass({'a':1,'b':0, 'c':5}) 
b=DictionaryClass({'d':4,'a':2}) 
c=a+b 

這會使對象c成爲a + b與用於添加它們的代碼的總和,您在__add__函數中實現它們。