Python合并字典的多种方法
字典是Python中特有的数据结构,它包含多个元素,每个元素都是一个键值对。在Python 3.9中,处理Python字典时编写的代码更具可读性也更精简。下面看看Python中合并字典的多种方法。
例如,创建一个字典d1,存储了他的年龄信息。再创建一个字典d2。该字典存储了他的GPA和婚姻状况。
d1 ={ name : Tom , age : 20}
d2 ={ gpa : 4.0, is_single : True}
现在想将这两个字典合并在一起,该怎么做呢?
1. 笨方法
首先想到的是编写一个for循环,使用iterable .items()在每个键值对上进行迭代,然后将该对插入新的字典dnew中。
d1 ={ name : Tom , age : 20}
d2 = { gpa : 4.0, is_single : True}
dnew = dict()for key, value in d1.items():
dnew[key] = value
for key, value in d2.items():
dnew[key] = value
# dnew == { name : Tom , age : 20, gpa : 4.0, is_single : True}
2. 默认方法
实际上,有一个内置方法可以将字典d1与另一个字典d2“更新”。
d1 ={ name : Tom , age : 20}
d2 = { gpa : 4.0, is_single : True}
dnew = d1.copy()
dnew.update(d2)
缺点是.update()
方法会修改原字典。需要先复制d1来创建新字典dnew。
3. “整洁”的方法
Python从版本3.5+起支持字典解压“ ** ”
。可以通过解压两个字典中的元素来创建新的“合并”字典。
dnew ={**d1, **d2}
这种解压方法成为Python3.5+合并字典的实际使用的方法。但是,这种语法在某些人看来可能不美观。当初次看到的时候,能猜到是什么意思吗?
还有另一种简洁的方法可以用一行代码就将字典合并。
dnew = dict(d1, **d2)
4. Python 3.9中干净的方法
Python 3.9引入了一种新的方法,使用联合运算符“|”
合并字典,非常简洁。
该联合运算符实际上在Python中并不新鲜。它可以用于“合并”两个集合。集合是无序且未索引的集合,也用花括号括起来。
d1 ={ name : Tom , age : 20}
d2 = { gpa : 4.0, is_single : True}
dnew = d1 | d2
print(dnew)
# { name : Tom , age : 20, gpa : 4.0, is_single : True}
拓展赋值: 对于两个列表或两个值a和b,a += b是a = a + b的缩写。这种拓展赋值行为也适用于字典联合运算符。这意味着d1 | = d2等于d1 = d1 | d2。
注意: 集合是无序的,字典是按顺序插入的(Python 3.6),即字典会记住插入元素的顺序。这意味着字典并集是不可交换的。d1 | d2和d2 | d1将导致合并的字典元素顺序不同。
感谢大家的耐心阅读,如有建议请私信或评论留言