Python: how to slice ein Wörterbuch auf der Grundlage der Werte der Schlüssel?
Sagen, ich habe ein Wörterbuch aufgebaut wie diese:
d={0:1, 1:2, 2:3, 10:4, 11:5, 12:6, 100:7, 101:8, 102:9, 200:10, 201:11, 202:12}
und ich möchte eine subdictionary d1
durch aufschneiden d
in der Weise, dass d1
enthält die folgenden Schlüssel: 0, 1, 2, 100, 101, 102
. Die endgültige Ausgabe sollte sein:
d1={0:1, 1:2, 2:3, 100:7, 101:8, 102:9}
Gibt es eine effiziente Pythonic Weg, dies zu tun, da mein real-Wörterbuch enthält über 2.000.000 Gegenstände?
Ich denke, diese Frage gilt für alle Fälle, wo die Schlüssel sind ganze zahlen, wenn das aufschneiden muss Sie bestimmte Ungleichheit Regeln, und wenn das endgültige Ergebnis muss eine Reihe von Scheiben, die zusammen in der gleichen Wörterbuch.
{k: d[k] for k in [0, 1, ...]}
?In meinem Fall sind alle Tasten Werte.
Sie können nicht wirklich "slice" ein Wörterbuch, da es eine veränderliche Zuordnung und nicht eine Folge. Ich denke, dass dict-comprehension ist Ihre beste Wette.
Schneiden Sie ein Wörterbuch ist nicht grundsätzlich unmöglich; Python einfach nicht bieten, syntax, es auch zu tun wie, sagen wir, Perl tut (obwohl in Perl, Sie haben gerade wieder die entsprechenden Werte, nicht eine Teilmenge der hash).
InformationsquelleAutor FaCoffee | 2016-11-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie Wörterbuch Verständnis mit:
In python 2.7 Sie können auch berechnen, Schlüssel mit (in python 3.x ersetzen
it.ifilter(...)
durchfilter(...)
):Was ist deine definition von der Ungleichheit der Regel? Bitte teilen Sie die komplette info haben, können wir nicht Ihre Gedanken Lesen 🙂
Eine definition könnte sein, "Entwurf" alle Werte, die Tasten sind größer und kleiner als ein bestimmter Wert
x
. Beispiel:06010001 < x <= 06012000
.siehe meine aktualisierte Antwort. Mit python 3.x, die Sie gerade haben, um es zu ersetzen.filter(...) durch filter(...)
InformationsquelleAutor Olivier Pellier-Cuit
Eine prägnante Art zu schaffen, die sub-Wörterbuch ist zu verwenden
operator.itemgetter
. Diese Funktion nimmt mehrere Argumente und gibt eine neue Funktion zurück, der ein Tupel mit den entsprechenden Elementen von a gegeben durchsuchbar.InformationsquelleAutor chepner