python字典里值如何相加_Python两个字典键同值相加的几种方法

本文介绍了如何在Python中合并两个字典,当键相同则值相加。提供了5种不同的方法,包括使用字典更新、循环遍历以及自定义函数等,展示了如何有效地合并并累加字典的值。
摘要由CSDN通过智能技术生成

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/Jerry_1126/article/details/86378259

两个字典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}

rest={}

for i in freq_stat:

for key,value in i.items():

if key in rest:

rest[key]+=1

else:

rest[key]=1

rest=sorted(rest.items(),key=lambda d:d[1])

————————————————

版权声明:本文为CSDN博主「杰瑞26」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/Jerry_1126/article/details/86378259

【Java必修课】通过Value获取Map中的键值Key的四种方法

1 简介 我们都知道Map是存放键值对的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...

通过Value获取Map中的键值Key的四种方法

1 简介 我们都知道Map是存放键值对的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...

python两个字典合并,两个list合并

1.两个字典:a={'a':1,'b':2,'c':3} b= {'aa':11,'bb':22,'cc':33} 合并1:dict(a,**b)  操作如下: 合并2:dict(a.items()+ ...

python 两个字典合并

dict1={1:[1,11,111],2:[2,22,222]}dict2={3:[3,33,333],4:[4,44,444]}合并两个字典得到类似 {1:[1,11,111],2:[2,22,2 ...

【机器学习算法-python实现】协同过滤(cf)的三种方法实现

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景       协同过滤(collaborative filtering)是推荐系统经常使用的一种方法.c ...

python多进程编程中常常能用到的几种方法

python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU资源,在python中大部分情况需要使用多进程.python提供了非常好用的多进程包Multiprocessing,只需要定义 ...

mfc 在VC的两个对话框类中传递参数的三种方法

弄了好久,今天终于把在VC中的对话框类之间传递参数的问题解决了,很开心,记录如下: 1. 我所建立的工程是一个基于MFC对话框的应用程序,一共有三个对话框,第一个对话框为主对话框,所对应的类为CTMD ...

Python中获取字典中最值对应的键

利用min(dict, key=dict.get) >>> d = {1:1, 2:0, 3:2} {1: 1, 2: 0, 3: 2} >>> min(d, ke ...

python 两个字典对比

def commir_two_dict(dictone,dicttwo): pass_num=0 fail_num=0 try: for i in dictone.keys(): if i in di ...

随机推荐

PLS-00306错误

ORA-06550: line 1, column 7:PLS-00306: wrong number or types of arguments in call to 'P'ORA-06550: l ...

Zookeeper笔记(四)Zookeeper在Dubbo中的应用

Zookeeper在Dubbo中的应用 Dubbo的架构 节点角色说明: Provider: 暴露服务的服务提供方.Consumer: 调用远程服务的服务消费方.Registry: 服务注册与发现的注 ...

Codeforces 600 E. Lomsat gelral (dfs启发式合并map)

题目链接:http://codeforces.com/contest/600/problem/E 给你一棵树,告诉你每个节点的颜色,问你以每个节点为根的子树中出现颜色次数最多的颜色编号和是多少. 最容 ...

NK 1137: 石子合并问题

1137: 石子合并问题 Time Limit: 1500 ms    Memory Limit: 10000 kB    Judge type: Multi-cases Total Submit ...

handsontable的核心方法

1.为handsontable添加钩子方法 addHook(key,callback):key为钩子方法名 ...

杭电oj1236 排名

Tips:此题比较简单,最好将每一个学生的信息构建一个结构体,另外需要注意的是,若分数相同,排序按姓名排序,我看网上很多都是使用中的sort算法,只需重写cmp函数即 ...

linux下golang

linux下golang的配置 linux下golang的配置 之前开发golang一直在windows下,今天在linux下试了一下 ,遇到一些梗,比如go 找不到 sync包.花了一小时全部解决, ...

STM32学习笔记(二):GPIO口工作原理

STM32每个IO口具有7个寄存器来控制,每个IO口都可以自由进行编程控制,我们编程实际上控制的是通过控制那7个寄存器来控制我们的IO口,我们可以通过编程控制IO口,把IO口配置成如下八种模式: 1. ...

java.net.BindException: 地址已在使用 (Bind failed)

java.net.BindException: 地址已在使用,是因为端口被占用,出现在启动服务的时候 报错如截图 报错显示 10062端口被占用冲突 执行netstat -alnp | grep 10 ...

MFC的组合框(ComboBox)控件切换下拉样式

由于课题的需求需要做MFC串口程序,看了百度下载的串口助手的界面风格,发现这个设计很好 波特率的组合框只给出了5个可选数值,然后第6个选项是Custom,即手动输入. 实际上DCB结构的BaudRat ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值