Что делает элемент пригодным для тестирования набора членства в Python? [Дубликат]

На этот вопрос уже есть ответ:

Как / почему set () в {frozenset ()} работает? 2 ответа

Я хотел бы понять, какие элементы можно проверить наset членство в Python. В общем, тестирование набора членства работает какlist тестирование членства в Python.

>>> 1 in {1,2,3}
True
>>> 0 in {1,2,3}
False
>>> 

Однако наборы отличаются от списков тем, что они не могут содержать недоступные объекты, например, вложенные наборы.

Список, ладно:

>>> [1,2,{1,2}]
[1, 2, {1, 2}]
>>> 

Set, не работает, потому что unhashable:

>>> {1,2,{1,2}}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'set'
>>> 

Теперь, даже если наборы не могут быть членами других наборов, мы можем использовать их в тестах на членство. Такая проверка не приводит к ошибке.

>>> {1} in {1,2,3}
False
>>> {1,2} in {1,2,3}
False
>>> set() in {1,2,3}
False
>>> 

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

>>> {'a':1} in {1,2}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
>>> {} in {1,2}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
>>> 

Это не может быть целой историей, потому чтоset може быть проверенным на членство в другом наборе, даже если он сам по себе не подлежит определению, давая результат, а не ошибку.

Так что вопрос такой: Что делает элемент пригодным для тестирования набора членства в Python?

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

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