Python每天3分钟 – #005一条语句合并两个字典

欢迎访问Python每天3分钟系列。

每天早上8点半,花3分钟时间,学习或温习一个Python知识点。

图片

今天是第005篇:一条语句合并两个字典

今天这个知识点比较简单,也许用不了3分钟,不过也是很常用的操作。

问题

有两个字典dict,如何把它们合并成第3个字典。

下面是两个dict,分别放了几个人的成绩:

a = {'zhangsan':99, 'lisi':88, 'maisu':77}
b = {'wangwu':89, 'zhaoliu':97'}

希望合并成一个包含所有人成绩的字典:

c = {'zhangsan':99, 'lisi':88, 'maisu':77, 'wangwu':89, 'zhaoliu':97'}

Python 3.9以后的答案

如果你用的是Python 3.9或者更新的版本,那就很简单:

c = a | b

在3.9以后,dict类支持了或运算符,一下子就可以解决上面的问题了。

Python 3.5以后的答案

如果你的Python没有那么新,但也是在Python 3.5之后,也不复杂:

c = {**a, **b}

**a表示给字典a解包,把a变成一个个单独的键值对。通过上面的写法,分别把ab解包成单独的键值对,然后再放在大括号中成为新的字典。

如果是Python 3.5以前呢?这也太老了把,建议升级Python!

两个附加知识点

知识点1 – update方法

dict类有个update方法,可以实现类似的效果:

a.update(b) #把b中的键值对放入到a中去,如果a和b有相同的键值对,就用b中的值更新a。
print(a)  #结果是:{'zhangsan':99, 'lisi':88, 'maisu':77, 'wangwu':89, 'zhaoliu:97'}

用update和前面的不同之处在于,它直接更新了字典a,但前面的做法是创建了新的字典c, 不影响字典ab

知识点2 – 有重复的key怎么办?

如果a和b中都有zhangsan这个key怎么办?

前面的例子已经给出了答案:会保留后面一个字典中的值。这个规则同时适用于update和或运算符。

a = {'zhangsan':99, 'lisi':88, 'maisu':77}
b = {'wangwu':89, 'zhangsan':97'} #注意zhangsan是重复的
c = a | b #c是:{'zhangsan':97, 'lisi':88, 'maisu':77} 保留了b中的97.
a.update(b) #a是:{'zhangsan':97, 'lisi':88, 'maisu':77} 保留了b中的97.

今天就说到这里,有问题给我留言。

原文链接:http://www.zsiss.com/4894.html,转载请注明出处。

0

评论0

请先

爱分享推出ChatGPT国内镜像,无需魔法直接用!写文章,写代码,做PPT,做网站原创软文效果好到爆炸 https://chat.gcrup.com

社交账号快速登录