Gibt es eine elegantere Möglichkeit zum entpacken von Schlüssel und Werte eines dictionary in zwei Listen, ohne die Konsistenz?
Was ich kam mit:
keys, values = zip(*[(key, value) for (key, value) in my_dict.iteritems()])
Aber ich bin nicht zufrieden. Was machen die pythonistas sagen?
Rufen Sie nicht Ihr Wörterbuch
du hast Recht. Ich werde Bearbeiten Sie die Frage, vielen Dank!
BTW feststellen, dass Ihre Liste Verständnis sollten alle Alarmglocken Klingeln, denn es tut nichts -- keine
dict
es Schatten der dict()
eingebaut.du hast Recht. Ich werde Bearbeiten Sie die Frage, vielen Dank!
BTW feststellen, dass Ihre Liste Verständnis sollten alle Alarmglocken Klingeln, denn es tut nichts -- keine
if
- Klausel zu filtern und keine Funktion zugeordnet wird.InformationsquelleAutor Aufwind | 2011-07-07
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was über die Verwendung von
my_dict.keys()
undmy_dict.Werte()
?keys, values = dict.keys(), dict.values()
?genau das, was ich meinte
Dies funktioniert, weil einer der Verträge mit
dict
ist, dass die Bestellung von Schlüsseln und Werten innerhalb des dict entsprechen wird, solange die Größe des dict nicht ändern.Warnung: ich bin mir ziemlich sicher, dass das nicht threadsicher (wenn das wichtig für dich). Da dict.keys() aufgerufen wird, separat von dict.Werte(), gibt es eine Möglichkeit für eine race condition, wo die dict geändert wird, zwischen denen Anrufe. Auspacken dict.Elemente() ist sicherer, weil hier eine einzelne Funktion aufrufen, und kann nicht möglicherweise eine unterschiedliche Anzahl von Schlüsseln und Werten.
In Python 3 ja, in Python 2 (was ich im Sinn hatte beim schreiben dieser Antwort) die beiden Listen zurück.
InformationsquelleAutor Constantinius
InformationsquelleAutor FogleBird