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
wie doppelte Eintraege aus einer Liste entfernen ?
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))
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.
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.
An dieser Stelle sei das Modul ``heapq`` eingeworfen, mit dem sich Listen so aufbohren lassen, dass sie automatisch sortieren.