美文网首页
Python 基础 | 一条语句合并两个字典

Python 基础 | 一条语句合并两个字典

作者: VTester | 来源:发表于2022-10-21 23:48 被阅读0次

问题

有两个字典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变成一个个单独的键值对。通过上面的写法,分别把a和b解包成单独的键值对,然后再放在大括号中成为新的字典。
如果是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, 不影响字典a和b。

知识点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.

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

相关文章

网友评论

      本文标题:Python 基础 | 一条语句合并两个字典

      本文链接:https://www.haomeiwen.com/subject/mvrvzrtx.html