在 python 为什么列表使用“+”而字典使用“|”实现同样的目标?

In python why do lists use "+" and dictionaries use "|" to achieve the same thing?

在python中,要将两个列表加在一起,我们使用“+”:

>>> [0, 1] + [2, 3]
[0, 1, 2, 3]

对于字典,我们使用“|”:

>>> {'a': 0, 'b': 1} | {'c': 2, 'd': 3}
{'a': 0, 'b': 1, 'c': 2, 'd': 3}

然而,这两个操作不是达到了同样的目的吗?在那种情况下,为什么他们使用两个不同的运算符,尤其是当列表和字典都不支持使用“|”时和“+”?

>>> [0, 1] | [2, 3]
TypeError: unsupported operand type(s) for |: 'list' and 'list'
>>> {'a': 0, 'b': 1} + {'c': 2, 'd': 3}
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'

字典支持“+”来实现“|”的意思不是更有意义吗用于?

当您使用 list + list 时,您是在添加两个列表,因为结果列表将始终具有 所有 前两个列表的元素:

[1, 2] + [2]  ->  [1, 2, 2]

但是字典只能包含每个键中的一个,因此当您使用 dict | dict 时,如果两个起始字典具有相同的键,则并非所有值都将出现在生成的字典中:

{"a": 1, "b": 2} | {"a": 3}  ->  {"a": 3, "b": 2}

字典的键不会重复,即使它们在两个原始字典中都存在,因此在数学上,结果不是两个字典的相加而是 union .用符号|来表示这个

请注意,其他类型也是如此 - 当相同的键/值可以重复两次时使用 +,但如果不能重复则使用 |

[1, 2] + [2]  # [1, 2, 2]
(1, 2) + (2,)  # (1, 2, 2)
{"a": 1, "b": 2} | {"b": 3}  # {"a": 1, "b": 3}
{1, 2} | {2, 3}  # {1, 2, 3}