Was berechtigt ein Element zu einem festgelegten Mitgliedschaftstest in Python? [Duplikat

Diese Frage hat hier bereits eine Antwort:

Wie / warum funktioniert set () in {frozenset ()}? 2 Antworten

Ich würde gerne verstehen, auf welche Artikel getestet werden kannset Mitgliedschaft in Python. Im Allgemeinen funktioniert das Testen der Mitgliedschaft wielist Mitgliedschaftstest in Python.

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

Mengen unterscheiden sich jedoch von Listen darin, dass sie keine nicht zu verwüstenden Objekte enthalten können, z. B. verschachtelte Mengen.

Liste, okay:

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

Set, funktioniert nicht da unhashable:

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

Nun, auch wenn Sets keine Mitglieder anderer Sets sein können, können wir sie in Mitgliedschaftstests verwenden. Eine solche Prüfung führt nicht zu einem Fehler.

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

Allerdings, wenn ich versuche, den gleichen Test durchzuführen, bei dem das zu testende Element ein @ idict, Ich erhalte einen Fehler, der darauf hindeutet, dass das zu testende Element nicht unbehandelbar sein kann.

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

Das kann nicht die ganze Geschichte sein, weil einset könne auf Mitgliedschaft in einer anderen Gruppe getestet werden, auch wenn diese selbst nicht verarbeitbar ist und ein Ergebnis anstelle eines Fehlers liefert.

So ist die Frage:Was berechtigt ein Element zu einem festgelegten Mitgliedschaftstest in Python?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage