(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}

|

的优势
  1. 字典、集合、列表更简单、更统一。
  2. 类型保留。特别是老方法2没有保留字典的类型。
  3. d1 | d2 是一个表达式,旧的方法不是,只要要立即使用结果(例如传递参数、列表理解等),它就可以派上用场
  4. 效率(在某些情况下不会创建临时词典,而在以前的 Python 版本中它们是)。