[Python-de] dictionary > hauptspeicher
Gerhard Häring
gh at ghaering.de
Don Sep 22 14:06:28 CEST 2005
Diez B. Roggisch wrote:
>>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. [...]
Ich würde dafür SQLite nehmen. Die Dinger in eine Datenbanktabelle
schreiben, dann mit einem SELECT DISTINCT zurücklesen:
...
cur.execute("select distinct value from stringtable")
for row in cur:
...
wobei das anschließende Iterieren über den Cursor die rows "on-demand"
abholt, und nicht etwa alle auf einmal. Somit dürfte es da kein
Speicherproblem geben.
-- Gerhard