Python 为什么词典(dict_项)支持并集(union)而不支持加法(add)?

Python 为什么词典(dict_项)支持并集(union)而不支持加法(add)?,python,python-3.x,Python,Python 3.x,举例说明: >>> a = dict(eggs='eggs', spam='spam') >>> b = dict(spam='spam', ham='ham') >>> dict(a.items() | b.items()) {'eggs': 'eggs', 'ham': 'ham', 'spam': 'spam'} 同时 >>> dict(a.items() + b.items()) Traceback (most r

举例说明:

>>> a = dict(eggs='eggs', spam='spam')
>>> b = dict(spam='spam', ham='ham')
>>> dict(a.items() | b.items())
{'eggs': 'eggs', 'ham': 'ham', 'spam': 'spam'}
同时

>>> dict(a.items() + b.items())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'dict_items' and 'dict_items'
虽然在Python2中
.items()
返回一个常规列表(与
dict\u items
相反),但这可能是偶然的



最后,我不认为“如果键有不同的值会发生什么”——这个难题适用于这里,因为操作符
似乎并不介意(两个值中的一个似乎是随机选择的)。

一些
dict
视图()支持<代码>+不是一个集合操作,因此没有真正的理由将其包括在内。

一些
dict
视图()支持
+
不是集合操作,因此没有真正的理由将其包括在内。

仅为@Patrick的答案添加一点,dict_items对象是
集合的子类。set

from collections.abc import Set

isinstance(d.items(), Set) # True
并且
Set
没有
+
操作:

'__add__' in dir(Set) # False

为了给@Patrick的答案增加一点,dict_items对象是
集合的一个子类。Set

from collections.abc import Set

isinstance(d.items(), Set) # True
并且
Set
没有
+
操作:

'__add__' in dir(Set) # False

让我们回到最基本的Python咒语:the

应该有一个——最好只有一个——显而易见的方法来做到这一点


因此,您会问为什么不应该将
+
定义为做与
|
相同的事情。你的答案是正确的:有两种同样正确的方法来做同样的事情,这不是Pythonic。

让我们回到最基本的Python咒语:the

应该有一个——最好只有一个——显而易见的方法来做到这一点


因此,您会问为什么不应该将
+
定义为做与
|
相同的事情。你的答案是正确的:有两种同样正确的方法来做同样的事情,这不是Pythonic。

顺便说一句,我只是问为什么它不被支持(或者有任何理由)。我没有一个具体的用例,我只是好奇。顺便说一句,我只是问为什么它不被支持(或者有什么原因)。我没有一个具体的用例要解决,我只是好奇。是的,但不是<支持代码>-。这就是为什么我觉得不一致的原因。。他们这样做是因为这是现有的数学符号。你希望
+
对集合做什么?如果你仔细想想,它实际上是相当有问题的,这就是为什么
|
^
&
以清晰的方式组合集合的原因。是的,但事实并非如此<支持代码>-。这就是为什么我觉得不一致的原因。。他们这样做是因为这是现有的数学符号。你希望
+
对集合做什么?如果你仔细想想,它实际上是相当有问题的,这就是为什么
|
^
&
以清晰的方式组合集合的原因。