合并字典时出现类型错误:| 不支持的操作数类型:“dict”和“dict”

sop*_*ros 9 python dictionary typeerror python-3.x python-3.8

我想使用运算符连接两个字典|,但出现以下错误:

TypeError: unsupported operand type(s) for |: 'dict' and 'dict'
Run Code Online (Sandbox Code Playgroud)

MWE代码如下:

d1 = {'k': 1, 'l': 2, 'm':4}
d2 = {'g': 3, 'm': 7}

e = d1 | d2
Run Code Online (Sandbox Code Playgroud)

sop*_*ros 8

字典的merge ( |) 和 update ( ) 运算符是在 Python 3.9中引入的,因此它们在旧版本中不起作用。您可以选择将 Python 解释器更新到 Python 3.9或使用以下替代方案之一:|=

# option 1:
e = d1.copy()
e.update(d2)

# option 2:
e = {**d1, **d2}
Run Code Online (Sandbox Code Playgroud)

但是,如果您想更新到 Python 3.9,您可以d1直接保存一些内存更新字典,而不是使用就地合并操作创建另一个字典:

d1 |= d2
Run Code Online (Sandbox Code Playgroud)

这相当于旧版本 Python 中的以下内容:

d1.update(d2)
Run Code Online (Sandbox Code Playgroud)