Sie sollten hier kein Listenverständnis verwenden. List-Comprehensions eignen sich hervorragend zum Erstellen einer Werteliste und sollten nicht für allgemeine Schleifen verwendet werden. Die Verwendung eines Listenverständnisses für die Nebenwirkungen ist eine Verschwendung von Speicher auf einem vollkommen guten Listenobjekt.
Liste Verständnis sind auch Ausdrücke, so kann nur andere Ausdrücke enthalten. del
ist eine Anweisung und kann nicht in einem Ausdruck verwendet werden.
Nur eine for
Schleife verwenden:
# use a tuple if you need a literal sequence; stored as a constant
# with the code object for fast loading
for key in ('selected', 'actual', 'previous', 'forecast'):
del event[key]
oder das Wörterbuch mit einem Wörterbuch Verständnis neu zu erstellen:
# Use a set for fast membership testing, also stored as a constant
event = {k: v for k, v in event.items()
if k not in {'selected', 'actual', 'previous', 'forecast'}}
Letztere ein völlig neues Wörterbuch erstellt, so dass andere Referenzen auf das gleiche Objekt gewonnen bestehenden sehe keine Änderungen.
Wenn Sie den Schlüssel löschen in einem Ausdruck verwenden müssen, können Sie object.__delitem__(key)
verwenden, aber dies ist nicht der richtige Ort; Sie würden mit einer Liste mit None
Objekten als Ergebnis enden, eine Liste, die Sie sofort verwerfen.
Nein, es ist nicht gültig, weil 'del' kein Ausdruck ist. Verwenden Sie Listenkompromittierungen nicht für Nebenwirkungen, ** nur ** zum Erstellen einer Werteliste. –
'für Schlüssel in ['ausgewählt', 'tatsächliche', 'vorherige', 'Prognose']: del Ereignis [Schlüssel]' – AChampion
Python wird nicht einmal eine solche Zeile als gültigen Code akzeptieren. Es kann keine Aussagen in einem Listenverständnis geben. –