Wenn ich ein Wörterbuch habe wie:
{ 'a': 1, 'b': 2, 'c': 3 }
Wie kann ich es in dieses konvertieren?
[ ('a', 1), ('b', 2), ('c', 3) ]
Und wie kann ich es dazu konvertieren?
[ (1, 'a'), (2, 'b'), (3, 'c') ]
Wenn ich ein Wörterbuch habe wie:
{ 'a': 1, 'b': 2, 'c': 3 }
Wie kann ich es in dieses konvertieren?
[ ('a', 1), ('b', 2), ('c', 3) ]
Und wie kann ich es dazu konvertieren?
[ (1, 'a'), (2, 'b'), (3, 'c') ]
[tuple(reversed(x)) for x in d.items()]
x
bereits eintuple
in Ihrem Code enthalten ist (es liegt in der Naturitems
, eine Iterable vontuple
s zu erstellen ), wäre es einfacher / schneller, dies einfach zu tun[x[::-1] for x in d.items()]
. Das Umkehr-Slice erstellt direkt eine Umkehrungtuple
der richtigen Größe, anstatt dentuple
Konstruktor iterativ (mit Gesamtzuordnung und Größenänderung am Ende) atuple
aus einemreversed
Iterator füllen zu lassen .k, v
in solchen Fällen nicht immer ein Muster erforderlich ist.compatibility
Tag wegen py2.x // py3.x UnterschiedeAntworten:
Es ist nicht in der von Ihnen gewünschten Reihenfolge, aber Diktate haben sowieso keine bestimmte Reihenfolge. 1 Sortieren oder organisieren Sie es nach Bedarf.
Siehe: items () , iteritems ()
In Python 3.x würden Sie nicht verwenden
iteritems
(was nicht mehr existiert), sondern verwendenitems
, was jetzt eine "Ansicht" in die Wörterbuchelemente zurückgibt. Weitere Informationen finden Sie im Dokument "Neue Funktionen für Python 3.0" und in der neuen Dokumentation zu Ansichten .1: In Python 3.7 wurde die Beibehaltung der Einfügereihenfolge für Diktate hinzugefügt
quelle
da es sonst niemand getan hat, werde ich py3k-Versionen hinzufügen:
quelle
Sie können Listenverständnisse verwenden.
werde dich bekommen
[ ('a', 1), ('b', 2), ('c', 3) ]
unddas andere Beispiel.
Lesen Sie mehr über Listenverständnisse, wenn Sie möchten. Es ist sehr interessant, was Sie damit machen können.
quelle
Erstellen Sie eine Liste mit benannten Tupeln
Es kann oft sehr praktisch sein, namedtuple zu verwenden . Zum Beispiel haben Sie ein Wörterbuch mit 'Name' als Schlüssel und 'Punktzahl' als Werte wie:
Sie können die Elemente als Tupel auflisten, sortieren, wenn Sie möchten, und den Namen und die Punktzahl erhalten. Nehmen wir an, der Spieler mit der höchsten Punktzahl (Index = 0) sieht sehr pythonisch so aus:
Wie macht man das:
Liste in zufälliger Reihenfolge oder Reihenfolge von Sammlungen.OrderedDict :
in der Reihenfolge, sortiert nach Wert ('Punktzahl'):
zuerst mit der niedrigsten Punktzahl sortiert:
sortiert mit der höchsten Punktzahl zuerst:
quelle
Was Sie wollen , ist
dict
‚sitems()
unditeritems()
Methoden.items
Gibt eine Liste von (Schlüssel-, Wert-) Tupeln zurück. Da Tupel unveränderlich sind, können sie nicht rückgängig gemacht werden. Daher müssen Sie die Elemente iterieren und neue Tupel erstellen, um die umgekehrten Tupel (Wert, Schlüssel) zu erhalten. Für die Iterationiteritems
ist dies vorzuziehen, da ein Generator zum Erzeugen der (Schlüssel-, Wert-) Tupel verwendet wird, anstatt die gesamte Liste im Speicher zu halten.quelle
und
quelle
Dies sind die wichtigsten Änderungen gegenüber Python 3.x und Python 2.x.
Für Python3.x verwenden
Für Python 2.7 verwenden
quelle
quelle
Nach
keys()
undvalues()
Methoden des Wörterbuchs undzip
.zip
gibt eine Liste von Tupeln zurück, die sich wie ein geordnetes Wörterbuch verhält.Demo:
quelle
collections.OrderedDict()
funktioniert besser mit mehreren Versionen von Python HTTP Requests lib. Auch wenn ich denzip
Funktionsnamen nicht als etwas vage / überladen mag .zip
-ifizierung kein "tiefes" Casting ist. Wenn also verschachtelte Kinder vorhanden sind, sind diese nicht betroffen. Möglicherweise müssen Sie Ihre eigene Rekursion würfeln.quelle
Ein einfacher wäre
Der zweite ist nicht einfacher, aber ja.
quelle