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

Montag 19. März 2007, 20:01

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:

Montag 19. März 2007, 20:04

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

Montag 19. März 2007, 23:54

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

Dienstag 20. März 2007, 00:37

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: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Dienstag 20. März 2007, 08:35

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:

Dienstag 20. März 2007, 09:40

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

Dienstag 20. März 2007, 16:33

Danke, hat mit der del funktioniert :D
Antworten