上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)]形式的对象直接更新到字典中,不支持合并运算操作,同时注意列表中的每个元素需要是类似键值对的形式,非键值对形式也不支持更新运算符操作。