Ich verwende Tupel als Schlüssel für ein Wörterbuch, das ich erstellt habe. Zum Beispiel:Wie man die Reihenfolge der Elemente in einem Tupel ignoriert
example_dict = {}
example_dict[("A", "B")] = "1"
Später, als ich den Wert eines Eintrags im Wörterbuch ändern wollen habe ich nicht noch Kontrolle über die Reihenfolge des Tupels. Zum Beispiel:
("B", "A") may be the case, instead of ("A", "B")
Ich bin mir bewusst, dass diese Tupel nicht gleich von einem einfachen == Vergleich ist, dass ich in dem Python-Shell versucht.
Was ich frage mich ist, wie ich das umgehen könnte? Wie könnte ich das folgende keine KeyError produzieren:
print (example_dict["B", "A"])
Gibt es eine Möglichkeit konsequent, um die Elemente eines Tupels bestellen? Gibt es eine Möglichkeit, die Reihenfolge vollständig zu ignorieren? Irgendwelche anderen Arbeiten um? Ich bin mir bewusst, dass ich einfach alle Tupel-Arrangements als Schlüssel in das Dictionary aufnehmen und dann die Werte der verschiedenen Permutationen später zusammentragen könnte. Ich möchte dies unbedingt vermeiden, da dies dem Problem nur Schwierigkeiten und Komplexität hinzufügt.
Sets haben auch kein Konzept der Elementmultiplizität. Das spielt keine Rolle, wenn Ihre Tupel alle die Länge 2 haben, aber es kann unordentlich zerbrechen, wenn Sie drei Elemente haben und Sie nicht unterscheiden können ("A", "A", "B") "from" ("A" , "B", "B") ", oder wenn Ihre Tupel unterschiedliche Längen haben können und Sie' ("A", "' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' Es bricht auch, wenn Sie versuchen, etwas wie "für ein, b in example_dict" zu tun. – user2357112
Irgendein Kommentar zur Effizienz dieses? Es scheint, dass 'Frozenset's viel größer sind als 'Tuple's, was die Speichergröße betrifft. – sudo