[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