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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。