是否有任何節奏曲的方法來組合兩個切分(增加出現在兩個切分中的鍵的值)?例如,我有兩個字典:Dict A: {'a': 1, 'b': 2, 'c': 3}Dict B: {'b': 3, 'c': 4, 'd': 5}我需要一種“合二為一”的節奏曲方式,結果是:{'a': 1, 'b': 5, 'c': 7, 'd': 5}也就是說:如果一個鍵出現在兩個數據中,那么添加它們的值,如果它只出現在一個DECT中,則保留它的值。
3 回答

明月笑刀無情
TA貢獻1828條經驗 獲得超4個贊
>>> from collections import Counter>>> A = Counter({'a':1, 'b':2, 'c':3})>>> B = Counter({'b':3, 'c':4, 'd':5}) >>> A + BCounter({'c': 7, 'b': 5, 'd': 5, 'a': 1})
dict

白衣染霜花
TA貢獻1796條經驗 獲得超10個贊
a = {'a': 'foo', 'b':'bar', 'c': 'baz'}b = {'a': 'spam', 'c':'ham', 'x': 'blah'}r = dict(a.items() + b.items() + [(k, a[k] + b[k]) for k in set(b) & set(a)])
def combine_dicts(a, b, op=operator.add): return dict(a.items() + b.items() + [(k, op(a[k], b[k])) for k in set(b) & set(a)])
>>> a = {'a': 2, 'b':3, 'c':4}>>> b = {'a': 5, 'c':6, 'x':7}>>> import operator>>> print combine_dicts(a, b, operator.mul) {'a': 10, 'x': 7, 'c': 24, 'b': 3}

慕少森
TA貢獻2019條經驗 獲得超9個贊
>>> A = {'a':1, 'b':2, 'c':3}>>> B = {'b':3, 'c':4, 'd':5}>>> c = {x: A.get(x, 0) + B.get(x, 0) for x in set(A).union(B)} >>> print(c){'a': 1, 'c': 7, 'b': 5, 'd': 5}
添加回答
舉報
0/150
提交
取消