是否有任何节奏曲的方法来组合两个切分(增加出现在两个切分中的键的值)?例如,我有两个字典: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
提交
取消