wie doppelte Eintraege aus einer Liste entfernen ?

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
PaulM
User
Beiträge: 5
Registriert: Montag 16. Juni 2008, 19:28

nehmen wir mal diese Liste:

mylist = [ ('foo1', 'aufwaschen'), ('foo2', 'ein Steak'), ('foo3', 'Freibier'), ('foo1','aufwaschen') ]


- wie kann ich es hinbekommen dass ich nur 1 x aufwaschen muss ?
bzw. anders gefragt: wie kann ich doppelte Einträge entfernen ?

- mir fällt dazu nur ein dass ich die Liste durchgehe, parallel ein Dictionary
mitführe und wenn schon da ... usw.

- das ist aber nicht so schick, es gibt bestimmt was elegantes

Vielen Dank vorab, Paule
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Wenn du doppelte Einträge entfernen willst und sofern die Reihenfolge egal ist, eignet sich set

Code: Alles auswählen

mylist = set(mylist)
#bzw. wenn es wieder eine liste sein muss
mylist = list(set(mylist))
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Du könntest deine Liste mittels set() in eine Menge umwandeln (dabei fallen die doppelten dann raus) und anschließend mit list() wieder zurückverwandeln. Es ist allerdings nicht garantiert, daß die Reihenfolge der Elemente dabei erhalten bleibt. Da die Struktur deiner Liste günstig ist, ginge es auch mit 'dict()' und anschließend 'dict.items()'. Auch hier würde ich mich nicht darauf verlassen, daß die Reihenfolge erhalten bleibt.
PaulM
User
Beiträge: 5
Registriert: Montag 16. Juni 2008, 19:28

Danke Darii und Pekh,
funktioniert super mit "set", die Reihenfolge ist nicht wichtig
Paule
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Und wenn doch, ist es meistens akzeptabel, die resultierende Liste einfach erneut zu sortieren.

An dieser Stelle sei das Modul ``heapq`` eingeworfen, mit dem sich Listen so aufbohren lassen, dass sie automatisch sortieren.
Antworten