Ich habe einige Probleme mit der collections.OrderedDict
Klasse. Ich verwende Python 2.7 auf Raspbian, der Debian-Distribution für Raspberry Pi. Ich versuche, zwei Wörterbücher zu drucken, um sie (nebeneinander) für ein Textabenteuer zu vergleichen. Die Reihenfolge ist wichtig, um genau zu vergleichen. Egal, was ich versuche, die Wörterbücher werden auf ihre übliche ungeordnete Weise gedruckt.
Folgendes bekomme ich, wenn ich es auf meinem RPi mache:
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 stimmt etwas nicht, weil es den Funktionsaufruf druckt und die Schlüssel und Wertgruppen in eine verschachtelte Liste setzt ...
Folgendes habe ich erhalten, indem ich auf meinem PC etwas Ähnliches ausgeführt habe:
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')])
Diesmal ist es in Ordnung, aber es sollte nicht die anderen Dinge drucken, oder? (Das Einfügen in die Liste und das Anzeigen des Funktionsaufrufs.)
Wo mache ich meinen Fehler? Es sollte nichts mit der pi-Version von Python zu tun haben, da es sich nur um die Linux-Version handelt.
OrderedDict
ist nach Einfügereihenfolge sortiert, nicht nach alphanumerischer Schlüsselreihenfolge.