在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'
字典支持“ ”來實作“|”是不是更有意義?是用來?
uj5u.com熱心網友回復:
當您使用時,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}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/363093.html
