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中字典和JSON互转操作实例
Jan 19 Python
python 删除大文件中的某一行(最有效率的方法)
Aug 19 Python
Python3基于sax解析xml操作示例
May 22 Python
Python实现登陆文件验证方法
Oct 06 Python
python 字典操作提取key,value的方法
Jun 26 Python
python写入数据到csv或xlsx文件的3种方法
Aug 23 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
Aug 28 Python
python 用 xlwings 库 生成图表的操作方法
Dec 22 Python
Python configparser模块配置文件过程解析
Mar 03 Python
Python基于time模块表示时间常用方法
Jun 18 Python
Python自动发送和收取邮件的方法
Aug 12 Python
Python之基础函数案例详解
Aug 30 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
PHP6 先修班 JSON实例代码
2008/08/23 PHP
php pack与unpack 摸板字符字符含义
2009/10/29 PHP
神盾加密解密教程(一)PHP变量可用字符
2014/05/28 PHP
phpcms中的评论样式修改方法
2016/10/21 PHP
学习YUI.Ext第七日-View&JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
Javascript笔记一 js以及json基础使用说明
2010/05/22 Javascript
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
js 判断控件获得焦点的示例代码
2014/03/04 Javascript
Js数组排序函数sort()介绍
2015/06/08 Javascript
AngularJS 避繁就简的路由
2016/07/01 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
JS验证码实现代码
2017/09/14 Javascript
详解ES6通过WeakMap解决内存泄漏问题
2018/03/09 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
VUE的history模式下除了index外其他路由404报错解决办法
2019/08/21 Javascript
微信小程序实现拖拽功能
2019/09/26 Javascript
element中el-container容器与div布局区分详解
2020/05/13 Javascript
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
使用Python编写类UNIX系统的命令行工具的教程
2015/04/15 Python
Python base64编码解码实例
2015/06/21 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
Python3.5集合及其常见运算实例详解
2019/05/01 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
Python实现AI换脸功能
2020/04/10 Python
GNC健安喜美国官网:美国第一营养品牌
2016/07/22 全球购物
Spartoo比利时:欧洲时尚购物网站
2017/12/06 全球购物
国税会议欢迎词
2014/01/16 职场文书
《晏子使楚》教学反思
2014/02/08 职场文书
酒店行政人事部经理职务说明书
2014/02/26 职场文书
2015个人年度工作总结范文
2015/05/28 职场文书
教师理论学习心得体会
2016/01/21 职场文书
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android
JS高级程序设计之class继承重点详解
2022/07/07 Javascript