Ich habe eine Liste von Wörterbüchern wie:
%Vor%Ich muss alle Schlüsselwertepaare aus allen Wörterbüchern entfernen, in denen der Schlüssel mykey1 entspricht. Ich könnte dies tun, indem ich die Del-Anweisung durchlaufe und benutze, aber ich frage mich, wie ich eine neue Liste mit Listen-Comprehensions oder Lambdas erstellen würde, die alle Schlüssel-Wert-Paare entfernen würden, wo der Schlüssel mykey1 ist.
Vielen Dank
Wenn Sie wirklich ein Listenverständnis verwenden möchten, kombinieren Sie es mit einem Diktatverständnis:
%Vor% Ersetze .iteritems()
für .items()
wenn du auf Python 3 bist.
Auf Python 2.6 und niedriger sollten Sie verwenden:
%Vor%, da die {key: value ...}
dict-Verstehenssyntax nur in Python 2.7 und 3 eingeführt wurde.
oder
%Vor% Anstatt del
zu verwenden, habe ich mich für dict.pop
entschieden, da pop
die KeyError
unterdrückt, wenn der Schlüssel nicht existiert.
Wenn Sie wirklich nur bestimmte Schlüssel erhalten möchten, wird dies etwas einfacher.
%Vor% erhöht KeyError
wenn die Schlüssel nicht im alten dict sind
Oder:
%Vor% fügt auch key:None
hinzu, wenn key
nicht im alten dict ist. Wenn Sie None
nicht möchten, können Sie Folgendes tun:
Je nachdem, wie viel Prozent des Wörterbuchs Sie einbeziehen / ausschließen und wie groß die Wörterbücher sind, kann dies etwas schneller sein als die Lösung von @MartijnPieters.
Tags und Links python list-comprehension