O que torna um elemento elegível para um teste de associação definido em Python? [duplicado

Esta pergunta já tem uma resposta aqui:

Como / por que set () em {frozenset ()} funcion 2 respostas

Gostaria de entender quais itens podem ser testados paraset associação ao Python. Em geral, o teste de associação de conjuntos funciona comolisteste de associação em Pytho

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

o entanto, os conjuntos são diferentes das listas porque não podem conter objetos laváveis, por exemplo, conjuntos aninhado

Lista, ok:

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

Set, não funciona porque unhashable:

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

Agora, mesmo que conjuntos não possam ser membros de outros conjuntos, podemos usá-los em testes de associação. Essa verificação não resulta em erro.

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

No entanto, se eu tentar fazer o mesmo teste em que o elemento que está sendo testado é umdict, Recebo um erro que sugere que o elemento que está sendo testado não pode ser laváve

>>> {'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'
>>> 

Não pode ser a história toda, porque umset pod ser testado para associação a outro conjunto, mesmo que seja ele próprio lavável, fornecendo um resultado, e não um err

Então a pergunta é:O que torna um elemento elegível para um teste de associação definido em Python?

questionAnswers(2)

yourAnswerToTheQuestion