Entfernen von Schlüsselwerten aus einer Liste von Wörterbüchern

7

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

    
dublintech 06.11.2012, 15:30
quelle

3 Antworten

14

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.

    
Martijn Pieters 06.11.2012, 15:33
quelle
4
%Vor%

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:

%Vor%

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.

    
mgilson 06.11.2012 15:32
quelle
1

[d.pop('mykey1', None) for d in list]

    
Cameron Sparr 06.11.2012 15:35
quelle

Tags und Links