>>> D1 = {'potatoes':2.67,'sugar':1.98,'cereal':5.99,'crisps':1.09}
>>> D2 = {'parsley':0.76,'cereal':3.22}
>>> D1 = updateDictionaryByIncrementing(D1, D2)
如何根據D2的內容更新D1的鍵/值?更新字典遞增
>>> D1 = {'potatoes':2.67,'sugar':1.98,'cereal':5.99,'crisps':1.09}
>>> D2 = {'parsley':0.76,'cereal':3.22}
>>> D1 = updateDictionaryByIncrementing(D1, D2)
如何根據D2的內容更新D1的鍵/值?更新字典遞增
您可以使用循環的鑰匙:
for key in D2:
D1[key] = D1.get(key, 0) + D2[key]
,或者您可以使用collections.Counter()
對象:後者技術的
from collections import Counter
D1 = dict(Counter(D1) + Counter(D2))
演示:
>>> from collections import Counter
>>> D1 = {'potatoes':2.67,'sugar':1.98,'cereal':5.99,'crisps':1.09}
>>> D2 = {'parsley':0.76,'cereal':3.22}
>>> Counter(D1) + Counter(D2)
Counter({'cereal': 9.21, 'potatoes': 2.67, 'sugar': 1.98, 'crisps': 1.09, 'parsley': 0.76})
>>> dict(Counter(D1) + Counter(D2))
{'cereal': 9.21, 'parsley': 0.76, 'sugar': 1.98, 'potatoes': 2.67, 'crisps': 1.09}
更新D1真的非常感謝 – user3560284
計數器爲方便方式做到這一點(計數不一定是整數)
>>> from collections import Counter
>>> D1 = {'potatoes':2.67,'sugar':1.98,'cereal':5.99,'crisps':1.09}
>>> D2 = {'parsley':0.76,'cereal':3.22}
>>> Counter(D1) + Counter(D2)
Counter({'cereal': 9.21, 'potatoes': 2.67, 'sugar': 1.98, 'crisps': 1.09, 'parsley': 0.76})
您也可以使用dict.update
榜單:
>>> D1.update((k, D1.get(k, 0) + v) for k, v in D2.items())
>>> D1
{'potatoes': 2.67, 'parsley': 0.76, 'crisps': 1.09, 'cereal': 9.21, 'sugar': 1.98}
非常感謝你 – user3560284
如果你想增加字典的值,你可以實現updateDictionaryByIncrementing
這樣的:
def updateDictionaryByIncrementing(a,b):
c = dict()
for k,v in b.items():
c[k] = a.get(k,0.0) + v
return c
通過使用get
方法在a
字典中,使用默認值處理a
對給定鍵沒有值的情況。
您可以使用字典解析,這樣
D1 = {'potatoes': 2.67, 'sugar': 1.98, 'cereal': 5.99, 'crisps': 1.09}
D2 = {'parsley': 0.76, 'cereal': 3.22}
print {key: D1.get(key, 0) + D2.get(key, 0) for key in D1.viewkeys() | D2}
輸出
{'cereal': 9.21,
'crisps': 1.09,
'parsley': 0.76,
'potatoes': 2.67,
'sugar': 1.98}
你可以做,使用try
/except
如下:
for k,v in D2.items():
try:
D1[k] += v
except KeyError:
D1[k] = v
什麼是你的問題? – Mathias
目前還不清楚你在問什麼,可否請您更改問題 –
我想用D2的鍵/值 – user3560284