Seite 1 von 1
listen prüfen
Verfasst: Donnerstag 8. April 2004, 16:00
von Gast
hallo zusammen!
ich möchte prüfen, ob einträge einer liste mehrfach vorkommen.
also z.b.
a kommt zweimal vor.
wie geht ihr das an?
mfg
rolgal mit seinen spezialproblemen

Verfasst: Donnerstag 8. April 2004, 16:47
von Dookie
Hi rolgal,
kommt darauf an, ob du auch wissen willst, wie oft jeder eintrag vorkommt, oder ob es reicht, zu wissen ob und welche einträge mehrfach vorkommen.
Erstmal der Test ob überhaupt doppelte vorkommen
Code: Alles auswählen
l=['a','b','c','a']
l.sort()
last = None
for x in l:
if x == last:
doppelte = True
break
else:
last = x
else: #for !!!
doppelte = False
print doppelte
Das erstellt eine Liste der Mehrfachvorkommenden
Code: Alles auswählen
l=['a','b','c','a']
l.sort()
result = []
last = None
for x in l:
if x == last:
result.append(x)
else:
last = x
print result
Und hier wird ein Dictionary erstellt in dem für jeden Eintrag die Häufigkeit des Vorkommens festgehalten wird.
Code: Alles auswählen
l=['a','b','c','a']
result = {}
for x in l:
if x in result.keys():
result[x] += 1
else:
result[x] = 1
print result
Gruß
Dookie
Verfasst: Freitag 9. April 2004, 04:38
von Gast
hi dookie!
danke dir mal wieder!
werde das alles morgen mal ausprobieren!
mfg
rolgal
Verfasst: Freitag 9. April 2004, 11:39
von Gast
hi dookie!
also mir ist da einiges nocht nicht klar. zum ziel. mit jedem listen eintrag soll was passieren, die doppelten einträge werden ignoriert.
nun zu dem was mir gar nicht klar ist.
warum machst du die zuweisung
und in welchem fall ist
mfg
rolgal
Verfasst: Freitag 9. April 2004, 12:07
von Dookie
Hi rolgal,
ich gehe mal davon aus, das die Liste keinen Eintrag mit dem Wert "None" hat.
"last" hätte ich besser "last_visited" nennen sollen. "x==last" wird immer dann wahr, wenn der letzte untersuchte Eintrag, also quasi der Vorgänger, "last" gleich dem aktuellen Eintrag "x" ist, darum wird die Liste auch vorher sortiert. Beim ersten Schleifendurchlauf wird last deshalb auf None gesetzt, weil ja noch kein Element untersucht wurde.
Für Deine Problemstellung gibts auch noch eine elegantere Lösung:
Code: Alles auswählen
from sets import Set
l=['a','b','c','a']
s = Set(l)
for x in s:
print x #oder mach sonstwas damit
Gruß
Dookie
Verfasst: Freitag 9. April 2004, 12:29
von Gast
hi dookie!
danke! das mit set ist genau das was ich brauche. zumindest haben das die ersten versuche gezeigt.
muss ich mal die doku dazu lesen. ist ja ein urgeiles modul, wie es scheint.
mfg
rolgal