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 comolist
este 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?