Seite 1 von 1

Einträge aus dictionary entfernen

Verfasst: Freitag 16. Oktober 2015, 15:12
von Serpens66
Ich möchte aus einem dictionary alle einträge löschen, dessen Value unwahr ist. Bisher ist folgendes meine Lösung, aber da ich ja gehöhrt habe, dass deepcopy nur in ausnahmefällen verwendet werden sollte, gibt es bestimmt einen viel besseren weg? :) (deepcopy wird verwendet, da ich ja nichts in einem dictionary löschen kann, über welches gerade iteriert wird)

Code: Alles auswählen

        params = ["spam":"","eggs":1,"appel":0]
        newparams = deepcopy(params)
        for key,value in params.items():
            if not value: # unwahre (dazu geört auch "") eintraege löschen
                del newparams[key]

Re: Einträge aus dictionary entfernen

Verfasst: Freitag 16. Oktober 2015, 15:23
von BlackJack
@Serpens66: Erstmal: `deepcopy()` ist hier völlig unnötig weil für diese Operation eine flache Kopie ausreicht.

Das einfachste ist nichts zu löschen sondern einfach ein neues Wörterbuch zu erstellen, das ist ein Einzeiler:

Code: Alles auswählen

new_params = dict((k, v) for k, v in params.items() if v)

Re: Einträge aus dictionary entfernen

Verfasst: Freitag 16. Oktober 2015, 15:29
von mutetella
@Serpens66
Mit dictionary comprehension

Code: Alles auswählen

>>> kv = [('spam', ''), ('eggs', 1), ('appel', 0)]
>>> {key: value for key, value in kv if value}
{'eggs': 1}
mutetella

Re: Einträge aus dictionary entfernen

Verfasst: Freitag 16. Oktober 2015, 18:32
von Serpens66
dankeschön :)

ps: in meinem post soll es natürlich ein dictionary sein, weshalb die [] klammern durch {} zu ersetzen sind ^^