Непоследовательное поведение между dict.items и dict.values

Замечания: примеры кода в python3, но вопрос стоит и о python2 (замена.keys с.viewkeys, так далее)

dict объекты предоставляют методы представления, которые (иногда) поддерживают операции над множествами:

>>> {'a': 0, 'b': 1}.keys() & {'a'}
{'a'}
>>> {'a': 0, 'b': 1}.items() & {('a', 0)}
{('a', 0)}

Но представление значений не поддерживает операторы множеств:

>>> {'a': 0, 'b': 1}.values() & {0}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for &: 'dict_values' and 'set'

Я понимаю, что значение dict может быть не хэшируемым объектом, поэтому не всегда возможно создать набор значений, однако то же самое верно дляdict.items, а такжездесь набор операций только сбой во время выполнения для.items как только в диктате есть неописуемый типтогда как заданная операция для.values терпит неудачу сразу.

В документах упоминается, чтоПредставления значений не считаются подобными множеству, поскольку записи, как правило, не являются уникальными, но это, кажется, не является убедительной причиной - например, python не мешает вам создавать набор букв типа{0, 0, 1, 2}.

Какова реальная причина такого несоответствия в поведении?

Ответы на вопрос(3)

Ваш ответ на вопрос