2016-10-30 3 views
0

Wenn ich über eine Gruppe von Wörterbüchern iterieren und alle Wörterbücher löschen wollte, bei denen der Wert eines bestimmten Schlüssels Null war, wie könnte ich das tun? Ich habe ursprünglich versucht, den Code unten, aber das funktioniert offensichtlich nicht in vielen Fällen, da die Länge der Gruppe abnimmt, wie Objekte gelöscht werden.python iterativ Wörterbücher mit Schlüsselwert löschen

data = [{'symbol': 'AA', 'sum': 0}, {'symbol': 'BB', 'sum': 0}, {'symbol': 'CC', 'sum': 10}] 

for i in range (0, len(data)): 
     if data[i]["sum"] == 0: 
      del data[i] 

Antwort

1

Es ist nicht wirklich eine gute Idee, Elemente aus einer Liste zu löschen, während Sie über die Liste gehen.

Eine viel pythonic Lösung wird:

data = [{'symbol': 'AA', 'sum': 0}, {'symbol': 'BB', 'sum': 0}, {'symbol': 'CC', 'sum': 10}] 
data = [x for x in data if x['sum'] != 0] 

Auf diese Weise haben wir eine Liste erstellen, die auf alle Elemente basieren wir in data bereits, wenn das Element [ ‚Summe‘] = 0

Verwandte Themen