Um die Liste der Wörterbücher aus leeren Werten zu filtern, muss ~ 30% der Daten aus den Wörterbüchern entfernt werden.Element aus dem Wörterbuch nach Schlüssel entfernen, während iteriert wird
So habe ich mit diesem Code am Ende:
qr = query_result
for row in qr:
for key, value in row.items():
if value ==' ' or value == None, value == '':
del row[key]
Allerdings gibt es ein Fehler während der Ausführung zunächst löschen Versuch:
RuntimeError: dictionary changed size during iteration
Nach ein bisschen suchen auf Stackoverflow Ich habe gefunden solution, die beinhaltet alle gelöschten Werte in separate Liste für die nachfolgende Löschung zu kopieren. Diese
delete = []
for k,v in dict.items():
if v%2 == 1:
delete.append(k)
for i in delete:
del dict[i]
, Ansatz, verwandelt sich in einen solchen Code für meinen Fall:
qr = query_result
for row in qr:
delete = []
for key, value in row.items():
if value == ' ' or value == '' or value == None:
delete.append(key)
for i in delete:
del row[i]
die auch leidet unter gewissen RuntimeError
.
So löschen Schleife außerhalb dict foreach Schleife sein sollte:
qr = query_result
for row in qr:
delete = []
for key, value in row.items():
if value == ' ' or value == '' or value == None:
delete.append(key)
for i in delete:
del row[i]
Aber da Code leider nur korrekt letzte Zeile modifiziert.
Wie verarbeite ich alle Zeilen und lösche dann Mülldaten?
Hier werden einige Daten für den Test:
c = [{'A': 'B', 'C': '3', 'EE': None, 'P': '343', 'AD': ' ', 'B': ''},
{'A': 'B', 'C': '3', 'EE': None, 'P': '343', 'AD': ' ', 'B': ''}]
My Ausgang:
{'A': 'B', 'C': '3', 'EE': None, 'P': '343', 'AD': ' ', 'B': ''}
{'A': 'B', 'C': '3', 'P': '343'}
gewünschte Ausgabe:
{'A': 'B', 'C': '3', 'P': '343'}
{'A': 'B', 'C': '3', 'P': '343'}