有没有办法在不盲目重写同一个键的值的情况下更新()一个单词?
例如,我希望在策略中为找到的同一个键添加值,并在找不到键时连接。

d1 = {'eggs':3, 'ham':2, 'toast':1}
d2 = {'eggs':2,'ham':1}

dresult = d1.myUpdate(d2)

print dresult
{'eggs':5,'ham':3,'toast':1}

最佳答案

您可以为此使用Counter(在python 2.7中引入):

from collections import Counter
d1 = {'eggs':3, 'ham':2, 'toast':1}
d2 = {'eggs':2,'ham':1}
dresult = Counter(d1) + Counter(d2)  #Counter({'eggs': 5, 'ham': 3, 'toast': 1})

如果您需要一个适用于python2.5+的版本,一个defaultdict也可以工作(虽然不是很好):
from collections import defaultdict
d1 = {'eggs':3, 'ham':2, 'toast':1}
d2 = {'eggs':2,'ham':1}
d = defaultdict(int)
dresult.update(d1)
for k,v in d2.items():
   dresult[k] += v

虽然你可以得到一个相当的蟒蛇2。?结果使用字典的setdefault方法。。。

关于python - 合并字典而不覆盖,如果键相等,则增加值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12217461/

10-12 03:10