Seite 1 von 1

wie doppelte Eintraege aus einer Liste entfernen ?

Verfasst: Montag 16. Juni 2008, 19:39
von PaulM
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

Verfasst: Montag 16. Juni 2008, 19:52
von Darii
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))

Verfasst: Montag 16. Juni 2008, 19:57
von Pekh
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.

Verfasst: Montag 16. Juni 2008, 20:01
von PaulM
Danke Darii und Pekh,
funktioniert super mit "set", die Reihenfolge ist nicht wichtig
Paule

Verfasst: Dienstag 17. Juni 2008, 12:47
von Y0Gi
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.