Einträge in Dictionarys löschen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Markus12
User
Beiträge: 195
Registriert: Dienstag 6. März 2007, 19:32
Wohnort: Frankfurt am Main

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
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Hi

So wie bei Listen:

Code: Alles auswählen

del d[key]
del l[index]
Gruss
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

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.
BlackJack

Ich würde die Variante bevorzugen die besser passt. Wenn man das Objekt nicht benötigt, dann ist ``del`` die passendere Alternative.
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

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
Diese Nachricht zersört sich in 5 Sekunden selbst ...
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

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]
TUFKAB – the user formerly known as blackbird
Markus12
User
Beiträge: 195
Registriert: Dienstag 6. März 2007, 19:32
Wohnort: Frankfurt am Main

Danke, hat mit der del funktioniert :D
Antworten