Seite 1 von 1

Einträge in Dictionarys löschen

Verfasst: Montag 19. März 2007, 20:01
von Markus12
Hi,
ich hab eine Frage:
Weiß jemand wie man bei dicts einzelne Einträge löscht?
Weiß es nur bei lists... :(

Bitte um Hilfe :D

Verfasst: Montag 19. März 2007, 20:04
von rayo
Hi

So wie bei Listen:

Code: Alles auswählen

del d[key]
del l[index]
Gruss

Verfasst: Montag 19. März 2007, 23:54
von Masaru
Huigh ... anstelle des del bevorzuge ich eher:

Code: Alles auswählen

>>> d = { 'eins' : 1, 'zwei' : 2 }
>>> d
{'eins': 1, 'zwei': 2}
>>> x = d.pop('eins')
>>> d
{'zwei': 2}
Die Methode dict.pop(<key>) nimmt den angebenen Schlüssel und Wert aus dem Dictionary, und liefert den Wert zudem zurück.

In meinem Beispiel "könnte" man mit der Variable x (dem Wert hinter dem ursprünglichen Dictionary Schlüssels) weiterarbeiten ... muss es aber natürlich nicht ;).

Auch bei Listen würde ich die pop() Methode dem del vorziehen.

Verfasst: Dienstag 20. März 2007, 00:37
von BlackJack
Ich würde die Variante bevorzugen die besser passt. Wenn man das Objekt nicht benötigt, dann ist ``del`` die passendere Alternative.

Verfasst: Dienstag 20. März 2007, 08:35
von Michael Schneider
Masaru hat geschrieben: Auch bei Listen würde ich die pop() Methode dem del vorziehen.
Moin,

wenn ich mich recht erinnere werden normale Listen nach dem LIFO-Prinzip behandelt und meinen Erfahrungen gemäß bremst diese Listenverkleinerung mein System umso mehr aus, je weiter vorn das zu poppende Element steht. Darum nimmt man ja statt pop(0) auch besser queue.

Also meine Frage: kommt das rein performancetechnisch wirklich auf dasselbe raus - von der Rückgabe des Wertes mal abgesehen?

Grüße,
Michel

Verfasst: Dienstag 20. März 2007, 09:40
von mitsuhiko
del ist etwas schneller. Und del kann auch mehr:

Code: Alles auswählen

>>> l = list(range(10))
>>> del l[2:4]
>>> l
[0, 1, 4, 5, 6, 7, 8, 9]
>>> del l[4:]
>>> l
[0, 1, 4, 5]

Verfasst: Dienstag 20. März 2007, 16:33
von Markus12
Danke, hat mit der del funktioniert :D