Du könntest es versuchen:
dict((k, bigdict[k]) for k in ('l', 'm', 'n'))
... oder in Python 3Python-Versionen 2.7 oder höher (danke an Fábio Diniz für den Hinweis, dass es auch in 2.7 funktioniert) :
{k: bigdict[k] for k in ('l', 'm', 'n')}
Update: Wie Håvard S betont, gehe ich davon aus, dass Sie wissen, dass die Schlüssel im Wörterbuch enthalten sein werden - siehe seine Antwort, wenn Sie diese Annahme nicht treffen können. Alternativ kann , wie timbo weist darauf hin , in den Kommentaren, wenn Sie einen Schlüssel möchten , die in fehlt bigdict
bis zur Karte None
können Sie tun:
{k: bigdict.get(k, None) for k in ('l', 'm', 'n')}
Wenn Sie Python 3 verwenden und nur Schlüssel in dem neuen Diktat möchten, die tatsächlich im ursprünglichen vorhanden sind, können Sie die Tatsache verwenden, um Objekte anzuzeigen, die einige festgelegte Operationen implementieren:
{k: bigdict[k] for k in bigdict.keys() & {'l', 'm', 'n'}}
bigdict
nicht enthältk
{k: bigdict.get(k,None) for k in ('l', 'm', 'n')}
wird mit der Situation umgehen, in der ein angegebener Schlüssel imbigdict.keys() & {'l', 'm', 'n'}
==>bigdict.viewkeys() & {'l', 'm', 'n'}
für Python2.7Zumindest etwas kürzer:
quelle
dict((k,bigdict.get(k,defaultVal) for k in wanted_keys)
Wenn Sie alle Schlüssel haben müssen.quelle
Ein kleiner Geschwindigkeitsvergleich für alle genannten Methoden:
Wie erwartet: Wörterbuchverständnisse sind die beste Option.
quelle
key
sie nicht vorhanden sindbigdict
.Diese Antwort verwendet ein Wörterbuchverständnis, das der ausgewählten Antwort ähnelt, jedoch nur für ein fehlendes Element gilt.
Python 2-Version:
Python 3-Version:
quelle
Vielleicht:
Python 3 unterstützt sogar Folgendes:
Beachten Sie, dass Sie die Existenz im Wörterbuch wie folgt überprüfen können:
bzw. für Python 3
quelle
a
nicht inbigdict
Okay, das hat mich ein paar Mal gestört, also danke Jayesh, dass du es gefragt hast.
Die obigen Antworten scheinen eine ebenso gute Lösung zu sein wie jede andere, aber wenn Sie dies im gesamten Code verwenden, ist es sinnvoll, die Funktionalität IMHO einzuschließen. Außerdem gibt es hier zwei mögliche Anwendungsfälle: einen, bei dem es Ihnen wichtig ist, ob alle Schlüsselwörter im Originalwörterbuch enthalten sind. und eine, wo du nicht. Es wäre schön, beide gleich zu behandeln.
Für meinen Zwei-Penneth-Wert schlage ich vor, eine Unterklasse von Wörterbüchern zu schreiben, z
Jetzt können Sie mit ein Unterwörterbuch herausziehen
Anwendungsbeispiele:
Wenn Sie den gesamten obigen Code ausführen, sollte (ungefähr) die folgende Ausgabe angezeigt werden (Entschuldigung für die Formatierung):
quelle
subdict(orig_dict, keys, …)
?Sie können auch verwenden
map
(was eine sehr nützliche Funktion ist, um sie trotzdem kennenzulernen):sd = dict(map(lambda k: (k, l.get(k, None)), l))
Beispiel:
PS: Ich habe das
.get(key, None)
aus einer früheren Antwort ausgeliehen :)quelle
Noch eine (ich bevorzuge Mark Longairs Antwort)
quelle
Lösung
Anwendungsbeispiele
quelle