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

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

图片

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

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

问题

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

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

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

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

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

Python 3.9以后的答案

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

= a | b

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

Python 3.5以后的答案

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

= {**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和或运算符。

= {'zhangsan':99, 'lisi':88, 'maisu':77}= {'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.

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

声明:本网站资源来源于网络收集,如有侵权,请联系站长进行删除处理。 分享目的仅供大家学习和交流,请不要用于商业用途,否则后果自负。本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解。本站资源售价只是赞助,收取费用仅维持本站的日常运营所需。反馈邮箱:1159995880@qq.com