欢迎访问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
变成一个个单独的键值对。通过上面的写法,分别把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.
今天就说到这里,有问题给我留言。
原文链接:https://www.afxvip.com/4894.html,转载请注明出处。
评论0