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将导致合并的字典元素顺序不同。


感谢大家的耐心阅读,如有建议请私信或评论留言

posted @ 2022-11-16 18:05  杨业壮  阅读(430)  评论(0编辑  收藏  举报