Werte einer Liste indizieren
-
hi,
ich habe eine liste l mit n elemente, die insgesamt m unterschiedliche werte besitzen. die werte sind dabei unsortiert und in beliebiger häufigkeit vertreten. wie kann ich nun für jedes der m elemente einen eindeutigen index vergeben (fortlaufende nummer) und diese nummer dann dem entspr. der n elemente zuordnen? das sollte möglichst schnell funktionieren.
beispiel:
in der liste sind 10 elemente gespeichert, mit 3 unterschiedlichen werten (Blah (index = 1), Fasel (index = 2), Text (index = 3)).
Liste
Fasel
Text
Blah
Text
Blah
Blah
Fasel
Fasel
Fasel
Faseldas soll rauskommen:
Liste mit eindeutigen Indizes
1
2
3
2
3
3
1
1
1
1wie kann ich das am schnellsten realisieren? die reihenfolge muss dabei beibehalten werden in der originalliste.
-
Geh die Liste durch, schau in deiner map ob der String schon vorhanden ist. Wenn ja, einfach den Index ans Ergebnis hängen, ansonsten vorher die map updaten.
-
naja die map ist ja vorher nicht vorhanden, muss quasi in einem 1. durchlauf erstellt werden. die ganze liste durchgehen dauert bei einer bestimmten grösse halt ziemlich lange. dachte dass da jemand ne dreh kennt um so etwas zu beschleunigen. via hash oder so. keine ahnung.
-
Sunday schrieb:
naja die map ist ja vorher nicht vorhanden, muss quasi in einem 1. durchlauf erstellt werden. die ganze liste durchgehen dauert bei einer bestimmten grösse halt ziemlich lange. dachte dass da jemand ne dreh kennt um so etwas zu beschleunigen. via hash oder so. keine ahnung.
Hä?
Du _musst_ die Liste einmal durchgehen um die Indexliste erstellen zu können. Und die war mit map auch nicht gemeint.
-
??? was dann ???