Python两个字典键同值相加的几种方法
两个字典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
{'a':8,'b':2,'c':3}
如果要考虑两个字典,如果考虑键同则值相加的问题,可以使用下面的几种方法:
方法一:
>>>A={'a':1,'b':2,'c':3}
>>>B={'b':4,'c':6,'d':8}
>>>forkey,valueinB.items():
...ifkeyinA:
...A[key]+=value
...else:
...A[key]=value
>>>dict(sorted(A.items(),key=lambdad: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={}
>>>forkeyinlist(set(A)|set(B)):
...ifA.get(key)andB.get(key):
...C.update({key:A.get(key)+B.get(key)})
...else:
...C.update({key:A.get(key)orB.get(key)})
>>>C
{'c':9,'d':8,'a':1,'b':6}
方法三:
>>>A={'a':1,'b':2,'c':3}
>>>B={'b':4,'c':6,'d':8}
>>>defdict_union(d1,d2):
...keys=d1.keys()|d2.keys()
...temp={}
...forkeyinkeys:
...temp[key]=sum([d.get(key,0)fordin(d1,d2)])
...returntemp
>>>C=dict_union(A,B)
>>>C
{'d':8,'a':1,'b':6,'c':9}
方法四:
>>>A={'a':1,'b':2,'c':3}
>>>B={'b':4,'c':6,'d':8}
>>>C={}
>>>forkey1inA:
...forkey2inB:
...ifkey1inB:
...C[key1]=A[key1]+B[key1]
...else:
...C[key1]=A[key1]
...ifkey2notinA:
...C[key2]=B[key2]
>>>C
{'a':1,'d':8,'b':6,'c':9}
方法五:
>>>A={'a':1,'b':2,'c':3}
>>>B={'b':4,'c':6,'d':8}
>>>C={}
>>>forkeyinA:
...ifB.get(key):
...C[key]=A[key]+B[key]
...else:
...C[key]=A[key]
>>>forkeyinB:
...ifnotA.get(key):
...C[key]=B[key]
>>>C
{'a':1,'b':6,'c':9,'d':8}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
