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编写vim插件的简单示例
Apr 17 Python
在Python中操作字符串之rstrip()方法的使用
May 19 Python
python遍历目录的方法小结
Apr 28 Python
Python正则表达式非贪婪、多行匹配功能示例
Aug 08 Python
Python基于回溯法子集树模板解决找零问题示例
Sep 11 Python
python的socket编程入门
Jan 29 Python
django 多数据库配置教程
May 30 Python
使用 Python ssh 远程登陆服务器的最佳方案
Mar 06 Python
Python Json数据文件操作原理解析
May 09 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
Jun 15 Python
python字典key不能是可以是啥类型
Aug 04 Python
python录音并调用百度语音识别接口的示例
Dec 01 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实现图片旋转效果实例代码
2014/10/01 PHP
php将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
点图片上一页下一页翻页效果
2008/07/09 Javascript
Javascript 构造函数 实例分析
2008/11/26 Javascript
javascript题目,重写函数让其无限相加
2012/02/15 Javascript
jquery.ui.draggable中文文档(原文翻译)
2013/11/15 Javascript
JS的get和set使用示例
2014/02/20 Javascript
javascript 数组操作详解
2015/01/29 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
详解Windows下安装Nodejs步骤
2017/05/18 NodeJs
checkbox:click事件触发span元素内容改变的方法
2017/09/11 Javascript
原生javascript实现文件异步上传的实例讲解
2017/10/26 Javascript
JS正则表达式封装与使用操作示例
2019/05/15 Javascript
vue.js实现回到顶部动画效果
2019/07/31 Javascript
微信小程序实现左侧滑栏过程解析
2019/08/26 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
vue 获取url里参数的两种方法小结
2020/11/12 Javascript
Python 隐藏输入密码时屏幕回显的实例
2019/02/19 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
python爬虫使用requests发送post请求示例详解
2020/08/05 Python
pycharm 实现复制一行的快捷键
2021/01/15 Python
HTML5文档结构标签
2017/04/21 HTML / CSS
博朗(Braun)俄罗斯官方商店:德国小家电品牌
2019/09/24 全球购物
十岁生日家长答谢词
2014/01/17 职场文书
岗位职责的构建方法
2014/02/01 职场文书
顶撞老师检讨书
2014/02/07 职场文书
教师自我鉴定范文
2014/03/20 职场文书
2015年幼儿园教研活动总结
2015/03/25 职场文书
2015新教师教学工作总结
2015/07/22 职场文书
导游词之安徽九华山
2019/09/18 职场文书
详解PHP服务器如何在有限的资源里最大提升并发能力
2021/05/25 PHP
Django框架之路由用法
2022/06/10 Python