Ich versuche, ein Wörterbuch in Python auszudrucken:
%Vor%Obwohl der Eintrag "Vorname" zuerst aufgeführt wird, aber Wörterbücher in Python scheinbar nach Werten sortiert sind, lautet das Ergebnis wie folgt:
%Vor%Wie drucke ich diese mit der gleichen Reihenfolge im Code oder die Reihenfolge, wenn Elemente in angehängt werden (nicht nach Werten oder Schlüsseln sortiert)?
Sie können eine Liste von Tupeln (oder Liste von Listen) verwenden. So:
%Vor%Sie können daraus ein Wörterbuch mit:
machen %Vor%Und die richtig sortierten Schlüssel wie folgt:
%Vor%Dann tu das:
%Vor%Aber ich stimme den Kommentaren zu Ihrer Frage zu: Wäre es nicht einfach, die Schlüssel in der erforderlichen Reihenfolge zu sortieren, wenn Sie stattdessen eine Schleife erstellen?
BEARBEITEN: (danke Rik Poggi), OrderedDict macht das für dich:
%Vor%Zuerst werden Wörterbücher weder nach Schlüssel noch nach Wert sortiert.
Und basierend auf Ihrer Beschreibung. Sie brauchen tatsächlich collections.OrderedDict Modul
%Vor% Beachten Sie, dass Sie OrderedDict
aus der Tupel-Liste instanziieren müssen, die nicht aus einem anderen Diktat stammen, da die Instanz die Reihenfolge der Elemente vor der Ausführung von OrderedDict instanziiert.
Sie können collections.OrderedDict
verwenden. Es ist in python2.7 und python3.2 + verfügbar.
'aber Wörterbücher in Python sind nach Werten sortiert' vielleicht irre ich mich hier, aber was für ein Spiel hast du diese Idee? Wörterbücher sind nach nichts sortiert.
Sie würden zwei Lösungen haben, entweder eine Liste von Schlüsseln zusätzlich zum Wörterbuch behalten oder eine andere Datenstruktur wie ein Array oder Arrays verwenden.
Ich frage mich, ob es ein geteiltes dict ist, das Sie wollen:
%Vor%Ein Wörterbuch, das mit dem Befehl OrderdDict erstellt wurde, behält die ursprüngliche Reihenfolge der Platzierung bei .
Mit anderen Worten, ein solches Wörterbuch iteriert über die Schlüssel / Wert-Paare in der Reihenfolge, in der sie eingefügt wurden.
Wenn Sie beispielsweise einen Schlüssel löschen und denselben Schlüssel erneut hinzufügen, ändert sich die Iterationsreihenfolge:
%Vor%Tags und Links python dictionary sorting associative-array