
ich habe eine sehr lange Liste von Strings, die ich sequentiell durchgehen muß. In dieser Liste gibt es sehr viele Duplikate, die ich gern herausfiltern würde. Dummerweise ist jetzt die Liste so lang, daß das Dictionary zum Rausfiltern der Duplikate nicht mehr in den Hauptspeicher passt.
Tjo, also irgendwie brauche ich da wohl eine Datenstruktur, die dann eben auf die Platte schreibt, sobald kein Hauptspeicher mehr da ist. Schön wäre natürlich, wenn nur selten vorkommende Strings auf Platte ausgelagert würden. Gibt es soetwas schon? Oder sollte man da Berkely DB oder etwas ähnliches verwenden?
Ja, sowas gibt: heisst datenbank :) Ob berkleydb dabei gut genug ist - KA. Abgesehen davon, das uU auch andere Herangehensweisen funktionieren: Wenn deine strings laenger sind als ein MD5-hash, dann koenntest du im ersten schritt einen index aus (hash, position_im_file) erstellen. Der sollte noch in den Speicher passen... Die sortierst du dann nach hash - und alle gleichen hashes pruefst du dann ueber die Datei auf echte gleichheit. Wahrscheinlich ist das noch nicht mal notwendig. Als Ergebnis hast du dann eine Liste von eindeutigen Strings. Die Sortierst du nach file-postition - und dann gehst du die durch und schreibst halt die Ergebnisstrings weg. Die Verwendung von mmap ist dabei wohl auch angezeigt - habe ich aber nicht aus dem Kopp parat. MfG Diez _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de