Python两个字典键同值相加的几种方法


Posted in Python onMarch 05, 2019

两个字典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}
>>> 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
{'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)
>>> C
{'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]
>>> C
{'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]
>>> C
{'a': 1, 'b': 6, 'c': 9, 'd': 8}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
用生成器来改写直接返回列表的函数方法
May 25 Python
Python实现的文本编辑器功能示例
Jun 30 Python
简单学习Python多进程Multiprocessing
Aug 29 Python
详解python:time模块用法
Mar 25 Python
python或C++读取指定文件夹下的所有图片
Aug 31 Python
Python多线程模块Threading用法示例小结
Nov 09 Python
pytorch 实现cross entropy损失函数计算方式
Jan 02 Python
python通过对字典的排序,对json字段进行排序的实例
Feb 27 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 Python
python 穷举指定长度的密码例子
Apr 02 Python
python使用pymongo与MongoDB基本交互操作示例
Apr 09 Python
python thrift 实现 单端口多服务的过程
Jun 08 Python
详解python算法之冒泡排序
Mar 05 #Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
Mar 05 #Python
Python实现KNN(K-近邻)算法的示例代码
Mar 05 #Python
Python按钮的响应事件详解
Mar 04 #Python
Python中三元表达式的几种写法介绍
Mar 04 #Python
Python生成器的使用方法和示例代码
Mar 04 #Python
Python去除字符串前后空格的几种方法
Mar 04 #Python
You might like
用Laravel Sms实现laravel短信验证码的发送的实现
2018/11/29 PHP
Prototype使用指南之range.js
2007/01/10 Javascript
Div Select挡住的解决办法
2008/08/07 Javascript
基于jquery+thickbox仿校内登录注册框
2010/06/07 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
2012/12/15 Javascript
JavaScript执行顺序详细介绍
2013/12/04 Javascript
js获取页面传来参数的方法
2014/09/06 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
jQuery学习笔记之入门
2016/12/14 Javascript
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
JS开发自己的类库实例分析
2019/08/28 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
2019/09/03 Javascript
详解Vue的mixin策略
2020/11/19 Vue.js
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
JavaScript实现切换多张图片
2021/01/27 Javascript
[44:41]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[42:52]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python中文编码那些事
2014/06/25 Python
跟老齐学Python之有容乃大的list(2)
2014/09/15 Python
对python For 循环的三种遍历方式解析
2019/02/01 Python
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
如何在python中实现线性回归
2020/08/10 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
python实现经典排序算法的示例代码
2021/02/07 Python
前端实现打印图像功能
2019/08/27 HTML / CSS
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
香港唯港荟酒店预订:Hotel ICON
2018/03/27 全球购物
《美丽的小兴安岭》教学反思
2014/02/26 职场文书
机电一体化求职信
2014/03/10 职场文书
停电放假通知
2015/04/14 职场文书
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python