Dict in OrderedDict konvertieren
Ich bin mit einigen Schwierigkeiten, den collections.OrderedDict
Klasse. Ich verwende Python 2.7 auf Raspbian die Debian-Distribution für das Raspberry Pi. Ich bin versucht zu drucken, zwei Wörterbücher, um zum Vergleich (side-by-side) für ein text-adventure. Die Reihenfolge ist wichtig, zu vergleichen, genau.
Egal was ich versuche, die print-Wörterbücher in Ihrer gewohnten ungeordnete Art und Weise.
Hier ist, was ich bekomme, wenn ich es auf meinem RPi:
import collections
ship = {"NAME": "Albatross",
"HP":50,
"BLASTERS":13,
"THRUSTERS":18,
"PRICE":250}
ship = collections.OrderedDict(ship)
print ship
# OrderedDict([('PRICE', 250), ('HP', 50), ('NAME', 'Albatross'), ('BLASTERS', 13), ('THRUSTERS', 18)])
Offensichtlich, es ist etwas nicht richtig, weil er den Druck, dem Aufruf der Funktion und die Schlüssel und Wert-Gruppen in eine verschachtelte Liste...
Dies ist, was ich bekam durch das laufen etwas ähnliches auf meinem PC:
import collections
Joe = {"Age": 28, "Race": "Latino", "Job": "Nurse"}
Bob = {"Age": 25, "Race": "White", "Job": "Mechanic", "Random": "stuff"}
#Just for clarity:
Joe = collections.OrderedDict(Joe)
Bob = collections.OrderedDict(Bob)
print Joe
# OrderedDict([('Age', 28), ('Race', 'Latino'), ('Job', 'Nurse')])
print Bob
# OrderedDict([('Age', 25), ('Race', 'White'), ('Job', 'Mechanic'), ('Random', 'stuff')])
Dieser Zeit, es ist in Ordnung, aber es sollte nicht den Druck der anderen Dinge, die, obwohl Recht? (Die Umsetzung in die Liste und zeigt die Funktion aufrufen.)
Wo bin ich was mein Fehler? Es sollte nicht sein, etwas zu tun mit der pi-version von Python, weil es nur die Linux-version.
InformationsquelleAutor der Frage pythonpiboy | 2013-03-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen Sie ein Wörterbuch erstendann vorbei, Wörterbuch zu einer
OrderedDict
. Durch die Zeit, die Sie tun, dass, die Bestellung ist nicht mehr korrekt zu sein.dict
ist von Natur aus nicht bestellt werden.Pass in eine Sequenz von Tupeln statt:
Was Sie sehen, wenn Sie drucken die
OrderedDict
ist es Darstellungund es ist völlig korrekt.OrderedDict([('PRICE', 250), ('HP', 50), ('NAME', 'Albatross'), ('BLASTERS', 13), ('THRUSTERS', 18)])
nur zeigt Sie in einer reproduzierbar Darstellung, was den Inhalt derOrderedDict
.InformationsquelleAutor der Antwort Martijn Pieters
Wenn Sie nicht Bearbeiten können, diesen Teil des Codes, wo Sie Ihre dict definiert wurde, können Sie immer noch, um es an einer beliebigen Stelle in irgendeiner Weise Sie wollen, wie diese:
InformationsquelleAutor der Antwort Jan Rozycki
Meisten der Zeit, wir gehen für OrderedDict, wenn wir gefordert, dass eine custom-order nicht generische eine wie ASC usw.
Hier ist die vorgeschlagene Lösung:
Dieser Ausgabe:
Hinweis: Die neue sortierte Wörterbücher pflegen Ihre Sortierreihenfolge, wenn Einträge gelöscht werden. Aber wenn der neue Schlüssel Hinzugefügt werden, die Schlüssel werden am Ende angehängt und die Sortierung nicht beibehalten.(offizielle doc)
InformationsquelleAutor der Antwort Abdul Majeed