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 相关文章推荐
python比较两个列表是否相等的方法
Jul 28 Python
Linux 下 Python 实现按任意键退出的实现方法
Sep 25 Python
Python编程实现数学运算求一元二次方程的实根算法示例
Apr 02 Python
python中使用PIL制作并验证图片验证码
Mar 15 Python
Python使用pylab库实现绘制直方图功能示例
Jun 01 Python
python 实现屏幕录制示例
Dec 23 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
Feb 05 Python
jupyter notebook参数化运行python方式
Apr 10 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
Aug 07 Python
plt.figure()参数使用详解及运行演示
Jan 08 Python
解决numpy和torch数据类型转化的问题
May 23 Python
详解Python如何批量采集京东商品数据流程
Jan 22 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
PHP 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
drupal 代码实现URL重写
2011/05/04 PHP
php类的定义与继承用法实例
2015/07/07 PHP
PHP INT类型在内存中占字节详解
2019/07/20 PHP
一个高效的JavaScript压缩工具下载集合
2007/03/06 Javascript
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
JavaScript修改css样式style
2008/04/15 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
jquery 延迟执行实例介绍
2013/08/20 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
2014/11/04 Javascript
纯js实现无限空间大小的本地存储
2015/06/18 Javascript
jQuery+CSS3实现3D立方体旋转效果
2015/11/10 Javascript
BootStrap轻松实现微信页面开发代码分享
2016/10/21 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
Vue组件创建和传值的方法
2018/08/17 Javascript
[01:46]TI4西雅图DOTA2前线报道 中国选手抱团调时差
2014/07/08 DOTA
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
python删除列表中重复记录的方法
2015/04/28 Python
Python实现批量压缩图片
2018/01/25 Python
python实现冒泡排序算法的两种方法
2018/03/10 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
OpenCV 边缘检测
2019/07/10 Python
python动态视频下载器的实现方法
2019/09/16 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
详解如何在css中引入自定义字体(font-face)
2018/05/17 HTML / CSS
园林技术个人的自我评价
2014/02/15 职场文书
《画杨桃》教学反思
2014/04/13 职场文书
电钳工人个人求职信
2014/05/10 职场文书
课外访万家心得体会
2014/09/03 职场文书
党员转正大会主持词
2015/07/02 职场文书
新手初学Java网络编程
2021/07/07 Java/Android