好好学Python:从零基础到项目实战
上QQ阅读APP看书,第一时间看更新

5.4 字典合并与更新运算符

从Python 3.9开始,添加了字典的合并(|)与更新(|=)运算符,这两个运算符已经被加入内置的dict类,为现有的dict.update和{**d1, **d2}字典合并方法提供了补充。

对于5.3.5中的update方法的操作,可以更改为如下的操作方式:

>>> student={'小萌': '000', '小智': '001'}
>>> student2={'小李':'003'}
>>> print(f'原student字典为:{student}')
原student字典为:{'小萌': '000', '小智': '001'}
>>> print(f'student合并student2结果为:{student|student2}')
student合并student2结果为:{'小萌': '000', '小智': '001', '小李': '003'}
>>> print(f'student2合并student1结果为:{student2|student}')
student2合并student1结果为:{'小李': '003', '小萌': '000', '小智': '001'}
>>> student |= student2    # 更新操作,效果与dict.update相同
>>> print(f'新suden字典为:{student}')
新suden字典为:{'小萌': '000', '小智': '001', '小李': '003'}
>>> student3={'小李':'005'}
>>> student |= student3  # 对相同项覆盖
>>> print(f'新student字典为:{student}')
新student字典为:{'小萌': '000', '小智': '001', '小李': '005'}

由输出结果可以看到,使用合并(|)运算符可以直接得到结果,使用更新(|=)运算符可以将一个字典中的项添加到另一个字典中,如果有相同的键就会将键对应的值覆盖。

还可以将列表中类似键值对的元素直接更新到字典中,如可以将类似[('小张', '007')]直接更新到上面的student对象中,但不支持合并运算。看如下操作示例:

由操作结果可以看到,使用更新(|=)运算符可以将类似[(value1,value2)]形式的对象直接更新到字典中,不支持合并运算操作,同时注意列表中的每个元素需要是类似键值对的形式,非键值对形式也不支持更新运算符操作。