Seite 1 von 1

Redundante Liste

Verfasst: Montag 30. Januar 2006, 15:00
von polypus
Eigentlich eine lächerliche Frage, aber ich komm nicht weiter und meine Internetsuche/Buchrecherche bringt auch nichts (vielleicht mangels richtiger Bezeichnung für das Problem).
O.K.: Ich habe eine Liste die so ca. 500 strings enthält. Allerdings sind viele der Strings mehrfach enthalten und ich möchte diese Redundanz wegbringen. Gibt es da irgendeine Anweisung wie ich das machen kann?? So, dass jeder Sting nur 1mal vorkommt.
Es ist ja fast schon peinlich, aber ich krieg da nichts weiter.

Big thx
Stefan :oops:

Verfasst: Montag 30. Januar 2006, 15:02
von modelnine

Code: Alles auswählen

mylist = ["hallo","hallo","weg da"]
mylist = list(set(mylist))
print mylist
Siehe auch: [wiki]Doppelte Einträge löschen[/wiki].

--- Heiko.

Verfasst: Montag 30. Januar 2006, 15:05
von polypus
Danke, aber:

>>>mylist = list(set(mylist))
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'set' is not defined

???

Verfasst: Montag 30. Januar 2006, 15:06
von modelnine
Lies entweder den Wiki-Artikel (da steht dass meine Lösung 2.4 only ist, und auch noch andere Lösungen), oder probier:

Code: Alles auswählen

import sets
mylist = list(sets.Set(mylist))
Das funktioniert ab 2.3. Alles was davor kommt mußt Du eine der Möglichkeiten nehmen die im entsprechenden Wiki-Artikel beschrieben sind.

--- Heiko.

Verfasst: Montag 30. Januar 2006, 15:09
von polypus
Danke klappt mit dem import! :D

Verfasst: Montag 30. Januar 2006, 20:19
von Mad-Marty
die allroundlösung die immer geht, wäre:

Code: Alles auswählen

mymap = {}
for item in mylist:
    mymap[item] = None

newlist = mymap.keys()

Verfasst: Montag 30. Januar 2006, 20:56
von modelnine
"Die immer geht" ist ein bisschen mit Vorsicht zu geniessen. Sie geht nur solange die Einträge die Du in das Dict schreibst hashbar sind (selbes gilt natürlich für set, das intern im Prinzip ein dict ist).

Für andere Lösungen die auch in allgemeineren Fällen funktionieren siehe den Wiki-Artikel.

--- Heiko.