相关文章推荐
拉风的勺子  ·  python ...·  6 小时前    · 
朝气蓬勃的电脑桌  ·  SELECT | TiDB SQL ...·  11 月前    · 
刚毅的酱牛肉  ·  echarts ...·  1 年前    · 
安静的松鼠  ·  Python ...·  1 年前    · 

两个字典A = {'a': 1, 'b': 2, 'c': 3}, B = {'b': 4, 'c': 6, 'd': 8} 要合并这两个字典,键值同则相加。

两个字典如果不考虑键相同则相加的话,可以使用d1.update(d2)可以很方便合并,但这样的后面的字典到中的值会覆盖字典d1中的值。

>>> A = {'a': 1, 'b': 2}
>>> B = {'a': 8, 'c': 3}
>>> A.update(B)
{'a': 8, 'b': 2, 'c': 3}

如果要考虑两个字典,如果考虑键同则值相加的问题,可以使用下面的几种方法:

>>> A = {'a': 1, 'b': 2, 'c': 3}
>>> B = {'b': 4, 'c': 6, 'd': 8}
>>> for key,value in B.items():
...     if key in A:
...         A[key] += value
...     else:
...         A[key] = value
>>> dict(sorted(A.items(), key=lambda d:d[1]))
{'a': 1, 'b': 6, 'd': 8, 'c': 9}
>>> A = {'a': 1, 'b': 2, 'c': 3}
>>> B = {'b': 4, 'c': 6, 'd': 8}
>>> C = {}
>>> for key in list(set(A) | set(B)):
...     if A.get(key) and B.get(key):
...         C.update({key: A.get(key) + B.get(key)})
...     else:
...         C.update({key: A.get(key) or B.get(key)})
{'c': 9, 'd': 8, 'a': 1, 'b': 6}
>>> A = {'a': 1, 'b': 2, 'c': 3}
>>> B = {'b': 4, 'c': 6, 'd': 8}
>>> def dict_union(d1, d2):
...     keys = d1.keys() | d2.keys()
...     temp = {}
...     for key in keys:
...         temp[key] = sum([d.get(key,0) for d in (d1, d2)])
...     return temp
>>> C = dict_union(A, B)
{'d': 8, 'a': 1, 'b': 6, 'c': 9}
>>> A = {'a': 1, 'b': 2, 'c': 3}
>>> B = {'b': 4, 'c': 6, 'd': 8}
>>> C = {}
>>> for key1 in A:
...     for key2 in B:
...         if key1 in B:
...             C[key1] = A[key1] + B[key1]
...         else:
...             C[key1] = A[key1]
...             if key2 not in A:
...                 C[key2] = B[key2]
{'a': 1, 'd': 8, 'b': 6, 'c': 9}
>>> A = {'a': 1, 'b': 2, 'c': 3}
>>> B = {'b': 4, 'c': 6, 'd': 8}
>>> C = {}
>>> for key in A:
...     if B.get(key):
...         C[key] = A[key] + B[key]
...     else:
...         C[key] = A[key]
>>> for key in B:
...     if not A.get(key):
...         C[key] = B[key]
{'a': 1, 'b': 6, 'c': 9, 'd': 8}
				
python实现两个字典相加 最近遇到了需要字典相加的操作,其中这分为两种。如下面例子所示 第一种是相同的保持第一个字典中的不同的直接添加到新字典中 例如dict1 = {'a': 1, 'b': 2} dict2 = {'a': 2, 'c': 3} Out: {'a': 1, 'b': 2, 'c': 3} 这种实现方式为 dict1 = {'a': 1, 'b': 2} dict2 = {'a': 2, 'c': 3} print({**dict1, **dict2}) 还有一种就是如果遇
在数据处理过程中经常遇到求两个字典相加(并集),要求相同的相加,不同的,进行汇集,最后得出一个总的字典,自己可以先进行思考,利用已有的知识,是否马上在心里有解决方法 d1={'a':1,'b':1} d2={'b':2,'c':2} 要求的结果:d1+d2={'a':1,'b':3,'c':2} 下面介绍两种方法: 自定义函数法 利用collections库 de...
在统计汇总游戏数据的时候,有些数据是是每天用字典存的,当我要对多天汇总的时候,就需要合并字典了。 如果key相同的话它们的相加。 不能用update方法,因为用update方法则相同的key的会覆盖,而不是相加。 千言不如一码。 def union_dict(*objs): _keys = set(sum([obj.keys() for obj in objs],[])) 方法1:使用循环遍历 可以通过循环遍历第一个字典对,在遍历的过程中判断第二个字典是否也有相同的,如果有则将对应的相加,如果没有则直接添加到结果字典中。示例代码如下: def merge_dict(x, y): for k, v in x.items(): if k in y.keys(): y[k += v else: y[k = v return y dict1 = {'a': 1, 'b': 2, 'c': 3} dict2 = {'c': 4, 'd': 5} dict3 = merge_dict(dict1, dict2) 运行以上代码后,dict3将得到结果`{'a': 1, 'b': 2, 'c': 7, 'd': 5}`。 方法2:使用Counter函数 可以利用Python的Counter函数来实现字典相加操作。Counter函数可以统计每个元素出现的次数并返回一个字典。通过将要相加字典传入Counter函数,然后将返回的Counter对象相加,最后将结果转换为普通字典即可。示例代码如下: from collections import Counter x = {'a': 1, 'b': 2, 'c': 3} y = {'c': 4, 'd': 5} X, Y = Counter(x), Counter(y) z = dict(X + Y) 运行以上代码后,字典z将得到结果`{'a': 1, 'b': 2, 'c': 7, 'd': 5}`。 以上是两种常见的方法来实现字典相加操作。无论是使用循环遍历还是利用Counter函数,都可以达到合并两个字典的目的。
引用「>>> map(lambda x,y:x-y if x> y else y-x, [2,1,3],[」 python IDE 3.12.2中实验,输出结果是: <map object at 0x000002C652F64AF0> list(map(lambda x,y:x-y if x> y else y-x, [2,1,3],[4,3,1])) [2, 2, 2] 图解Linux命令之--badblocks命令 mingqiu09: 最后面应该是卸载设备吧 Shell中字符串排序的几种方法 weixin_42783087: 自然数 101 怎么会排在 2 前面