(dict | dict 2) - python 字典替代运算符如何工作?
(dict | dict 2) - how python dictionary alternative operator works?
dict | dict2
操作在Python中做什么?
我遇到了它,但我不确定它的实际作用以及何时使用它。
新的字典更新和合并运算符(Python >= 3.9)
从 Python 3.9 开始,可以使用 merge (|
) 和 update (|=
) Python 中的运算符。它们在 PEP-584 中有描述。从本质上讲,语义是最后一个重复键的值会覆盖以前的值,并成为结果字典中键的值。
这些运算符使得从两个字典中创建一个字典变得更容易,因此它们等同于以下操作:
e = d1 | d2 # merge since Python 3.9
相当于旧的:
# Python < 3.9
# merge - solution 1
e = d1.copy(); e.update(d2)
# merge - solution 2
e = {**d1, **d2}
并且:
d1 |= d2 # merge since Python 3.9
相当于旧的:
# Python < 3.9
# merge inplace - solution 1
d1.update(d2)
# merge inplace - solution 2
d1 = {**d1, **d2}
|
的优势
- 字典、集合、列表更简单、更统一。
- 类型保留。特别是老方法2没有保留字典的类型。
d1 | d2
是一个表达式,旧的方法不是,只要要立即使用结果(例如传递参数、列表理解等),它就可以派上用场
- 效率(在某些情况下不会创建临时词典,而在以前的 Python 版本中它们是)。
dict | dict2
操作在Python中做什么?
我遇到了它,但我不确定它的实际作用以及何时使用它。
新的字典更新和合并运算符(Python >= 3.9)
从 Python 3.9 开始,可以使用 merge (|
) 和 update (|=
) Python 中的运算符。它们在 PEP-584 中有描述。从本质上讲,语义是最后一个重复键的值会覆盖以前的值,并成为结果字典中键的值。
这些运算符使得从两个字典中创建一个字典变得更容易,因此它们等同于以下操作:
e = d1 | d2 # merge since Python 3.9
相当于旧的:
# Python < 3.9
# merge - solution 1
e = d1.copy(); e.update(d2)
# merge - solution 2
e = {**d1, **d2}
并且:
d1 |= d2 # merge since Python 3.9
相当于旧的:
# Python < 3.9
# merge inplace - solution 1
d1.update(d2)
# merge inplace - solution 2
d1 = {**d1, **d2}
|
- 字典、集合、列表更简单、更统一。
- 类型保留。特别是老方法2没有保留字典的类型。
d1 | d2
是一个表达式,旧的方法不是,只要要立即使用结果(例如传递参数、列表理解等),它就可以派上用场- 效率(在某些情况下不会创建临时词典,而在以前的 Python 版本中它们是)。