Hallo,
ich habe mich in eurem Forum angemeldet, nachdem ich hier schon einige Lösungsvorschläge zu anderen Problemen, die ich hatte, gefunden habe, weil ich Probleme mit einem Programm habe.
Ich habe einen sehr großen Text mit mehr als 250.000 Wörtern und ich möchte in diesem Text die Wörter vergleichen, ob sie mehrmals im Text vorkommen. Dazu finde ich aber keine Lösung, die einigermaßen schnell läuft (alles hat bisher über 1 Stunde gedauert). Das Problem liegt an der doppelten for-Schleife, die ich benutze, um ein Wort aus dem Text rauszusuchen und das dann mit den anderen Wörtern im Text vergleiche.
Es dauert sowohl mit Listen, Dictionarys als auch mit Mengen so lange, weswegen ich mit meinem Latein echt am Ende bin.
Funktioniert das überhaupt in einem passablen Zeitrahmen mit einer doppelten for-schleife oder geh ich ganz falsch an die Sache ran?
Vielen Dank für die Hilfe =)
hohe Laufzeit bei Programm
-
- User
- Beiträge: 456
- Registriert: Mittwoch 15. April 2009, 14:11
Erstmal herzlich Willkommen im Forum!
Das ist in python ein 2 Zeiler:
Für mehr Information über Counter: http://docs.python.org/2/library/collec ... ns.Counter
Unter der Haube wird ein Dictionary (hash table) benutzt. Eine solche grundlegende Pythonklasse solltest du so schnell wie möglich in einem Tutorial nacharbeiten. Falls das immer noch nicht klappen sollte, wäre es gut wenn du mal dein Quelltext hier posten würdest. Gegebenenfalls lässt sich auch was mit PyPy machen.
Grüße,
anogayales
Das ist in python ein 2 Zeiler:
Code: Alles auswählen
from collections import Counter
words = ["wort1", "wort2", "wort1"]
counter = Counter(words)
print words
Code: Alles auswählen
Counter({'wort1': 2, 'wort2': 1})
Unter der Haube wird ein Dictionary (hash table) benutzt. Eine solche grundlegende Pythonklasse solltest du so schnell wie möglich in einem Tutorial nacharbeiten. Falls das immer noch nicht klappen sollte, wäre es gut wenn du mal dein Quelltext hier posten würdest. Gegebenenfalls lässt sich auch was mit PyPy machen.
Grüße,
anogayales
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Am besten zeigst du mal deinen Quelltext. Ich kann mir nicht vorstellen fuer was du eine verschachtelte (ich nehme an das meinst du mit doppelt) brauchst.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
@becher: Falls Du eine verschachtelte Schleife hast bei der für jedes Wort noch einmal jedes Wort durchlaufen wird, dann kann man sich ja leicht ausrechnen, dass das was in der inneren Schleife passiert 250.000×250.000 = 62.500.000.000 mal ausgeführt wird.