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 相关文章推荐
把项目从Python2.x移植到Python3.x的经验总结
Apr 20 Python
用Python实现服务器中只重载被修改的进程的方法
Apr 30 Python
pygame实现弹力球及其变速效果
Jul 03 Python
DataFrame中去除指定列为空的行方法
Apr 08 Python
基于pip install django失败时的解决方法
Jun 12 Python
记一次python 内存泄漏问题及解决过程
Nov 29 Python
Python使用Slider组件实现调整曲线参数功能示例
Sep 06 Python
Python日志logging模块功能与用法详解
Apr 09 Python
Django 5种类型Session使用方法解析
Apr 29 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
Apr 30 Python
python在linux环境下安装skimage的示例代码
Oct 14 Python
七个Python必备的GUI库
Apr 27 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
Thinkphp将二维数组变为标签适用的一维数组方法总结
2014/10/30 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
jquery中获取元素的几种方式小结
2011/07/05 Javascript
JavaScript高级程序设计 事件学习笔记
2011/09/10 Javascript
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
JavaScript表达式:URL 协议介绍
2013/03/10 Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
2013/11/12 Javascript
ExtJs中gridpanel分组后组名排序实例代码
2013/12/02 Javascript
js获取当前路径的简单示例代码
2014/01/08 Javascript
jQuery 实现自动填充邮箱功能(带下拉提示)
2014/10/14 Javascript
jQuery如何防止这种冒泡事件发生
2015/02/27 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
2016/10/09 Javascript
Bootstrap3 多选和单选框(checkbox)
2016/12/29 Javascript
jQuery实现弹窗居中效果类似alert()
2017/02/27 Javascript
node.js操作mysql简单实例
2017/05/25 Javascript
详谈for循环里面的break和continue语句
2017/07/20 Javascript
微信小程序 页面跳转传值实现代码
2017/07/27 Javascript
Mongoose实现虚拟字段查询的方法详解
2017/08/15 Javascript
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
详解vue微信网页授权最终解决方案
2019/06/16 Javascript
如何自定义微信小程序tabbar上边框的颜色
2019/07/09 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
pygame实现简易飞机大战
2018/09/11 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
pip install 使用国内镜像的方法示例
2020/04/03 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
妇科医生自荐信
2013/11/05 职场文书
计算机科学系职业生涯规划书
2014/03/08 职场文书
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL