Wie kann ich ein Wörterbuch nach Schlüssel sortieren?
Wie könnte man von "{2:3, 1:89, 4:5, 3:0}" zu "{1:89, 2:3, 3:0, 4:5}" übergehen?
Ich habe mir einige Beiträge angesehen, aber sie alle verwenden den "sort" Operator, der Tupel zurückgibt.
829
3
Standard-Python-Dictionaries sind ungeordnet. Selbst wenn Sie die (Schlüssel-Wert)-Paare sortieren würden, wären Sie nicht in der Lage, sie in einem "Dict" so zu speichern, dass die Reihenfolge beibehalten würde.
Der einfachste Weg ist die Verwendung von
OrderedDict
, das sich die Reihenfolge merkt, in der die Elemente eingefügt worden sind:Es ist egal, wie
od
ausgedruckt wird; es wird wie erwartet funktionieren:Python 3
Für Python 3 Benutzer muss man
.items()
anstelle von.iteritems()
verwenden:In Wörterbüchern selbst gibt es keine geordneten Einträge, sollten Sie sie jedoch in einer bestimmten Reihenfolge ausdrucken wollen, finden Sie hier einige Beispiele:
In Python 2.4 und höher:
gibt:
(Python unter 2.4:)
Quelle: http://www.saltycrane.com/blog/2007/09/how-to-sort-python-dictionary-by-keys/
Wie andere bereits erwähnt haben, sind Wörterbücher von Natur aus ungeordnet. Wenn es jedoch nur darum geht, Wörterbücher geordnet anzuzeigen, können Sie die Methode
__str__
in einer Wörterbuchunterklasse überschreiben und diese Wörterbuchklasse anstelle des eingebautendict
verwenden. Beispiel.Beachten Sie, dass dies nichts daran ändert, wie die Schlüssel gespeichert werden, in welcher Reihenfolge sie zurückkommen, wenn Sie über sie iterieren usw., nur wie sie mit
print
oder auf der Python-Konsole angezeigt werden.