Я размышлял над тем, почему стандартный класс dict на языке Python не поддерживает операторы сложения и вычитания, такие как «+» или «+ =», например.Почему словари Python не поддерживают оператор «+»
>>> foo = {'a': 1, 'b': 2}
>>> bar = {'c': 3, 'd': 4}
>>> foo + bar
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
мое желаемое за действительное было бы для следующего результата вместо:
>>> foo + bar
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
Одинаково почему не __radd__(self, other)
результат такой же, как self.__update__(other)
?
>>> foo += bar
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +=: 'dict' and 'dict'
Кто-нибудь знает исторические причины поведения по умолчанию?
(я признаю, что это может быть неоднозначным, какое значение следует использовать в сценариях, где foo
и bar
имеют те же основные, но разные значения ключа)
Я думаю, что ваша скотиная концессия - довольно хороший ответ на ваш вопрос. '+' было бы вводящим в заблуждение способом выразить неоднозначное учение. – khelwood
Поскольку выход не был бы тривиальным. Что произойдет, если оба словаря имеют один и тот же ключ? Исключение? значение будет взято из первого словаря? может быть, со второго? Он четко не определен и поэтому не реализован. – DeepSpace
[См. Здесь] (http://bugs.python.org/issue6410) – Sevanteri