Gibt es eine integrierte / schnelle Möglichkeit, eine Liste von Schlüsseln für ein Wörterbuch zu verwenden, um eine Liste der entsprechenden Elemente zu erhalten?
Zum Beispiel habe ich:
>>> mydict = {'one': 1, 'two': 2, 'three': 3}
>>> mykeys = ['three', 'one']
Wie kann ich mykeys
die entsprechenden Werte im Wörterbuch als Liste abrufen?
>>> mydict.WHAT_GOES_HERE(mykeys)
[3, 1]
python
list
dictionary
key
FazJaxton
quelle
quelle
mydict
es sich um einen Funktionsaufruf handelt (der ein Diktat zurückgibt), wird die Funktion mehrmals aufgerufen, oder?Ein paar andere Möglichkeiten als list-comp:
map(mydict.__getitem__, mykeys)
None
wenn Schlüssel nicht gefunden:map(mydict.get, mykeys)
Alternativ kann using
operator.itemgetter
ein Tupel zurückgeben:Hinweis : Gibt in Python3
map
eher einen Iterator als eine Liste zurück. Verwenden Sielist(map(...))
für eine Liste.quelle
Ein kleiner Geschwindigkeitsvergleich:
Listenverständnis und Itemgetter sind also die schnellsten Wege, dies zu tun.
UPDATE: Bei großen Zufallslisten und Karten hatte ich etwas andere Ergebnisse:
In diesem Fall ist der klare Gewinner
f = operator.itemgetter(*l); f(m)
und klarer Außenseiter :map(lambda _: m[_], l)
.UPDATE für Python 3.6.4:
Die Ergebnisse für Python 3.6.4 sind also fast gleich.
quelle
Hier sind drei Möglichkeiten.
Erhöhen,
KeyError
wenn der Schlüssel nicht gefunden wird:Standardwerte für fehlende Schlüssel.
Fehlende Schlüssel überspringen.
quelle
found_keys = mapping.keys() & iterable
gibtTypeError: unsupported operand type(s) for &: 'list' and 'list'
auf Python 2.7; `found_keys = [Schlüssel für Schlüssel in Mapping.keys (), wenn Schlüssel in iterable] funktioniert am bestenVersuche dies:
quelle
Versuche dies:
quelle
items()
wird bevorzugt, es muss keine zusätzliche Suche durchgeführt werden, hier gibt es keinelen(mydict)*len(mykeys)
Operation! (Beachten Sie, dass ich ein Set benutze)mykeys
konstante Zeit abgeschrieben. Ich verwende einen Satz, keine Listequelle
Pandas tut dies sehr elegant, obwohl das Verständnis von Listen immer technisch pythonischer sein wird. Ich habe momentan keine Zeit für einen Geschwindigkeitsvergleich (ich komme später wieder und stelle ihn ein):
quelle
Oder einfach,
mydict.keys()
das ist ein integrierter Methodenaufruf für Wörterbücher. Auch erkundenmydict.values()
undmydict.items()
.// Ah, OP Post hat mich verwirrt.
quelle
Nach dem Schließen von Python: Effiziente Methode zum Erstellen einer Liste aus Diktatwerten mit einer bestimmten Reihenfolge
Abrufen der Schlüssel ohne Erstellen der Liste:
Die Ausgabe:
Welches der Reihenfolge in der Liste entspricht
quelle
falls es Schlüssel gibt, die nicht diktiert sind.
quelle