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