So ordnen Sie IDs schnell aufeinanderfolgenden Nummern zu
Ich habe eine große CSV-Datei mit Zeilen, die wie folgt aussehen:
stringa,stringb
stringb,stringc
stringd,stringa
Ich muss es konvertieren, damit die IDs fortlaufend von 0 nummeriert werden. In diesem Fall würde das folgende funktionieren
0,1
1,2
3,0
ein aktueller Code sieht so aus:
import csv
names = {}
counter = 0
with open('foo.csv', 'rb') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
if row[0] in names:
id1 = row[0]
else:
names[row[0]] = counter
id1 = counter
counter += 1
if row[1] in names:
id2 = row[1]
else:
names[row[1]] = counter
id2 = counter
counter += 1
print id1, id2
Python-Dikte verbrauchen leider viel Speicher und meine Eingabe ist groß.
Was kann ich tun, wenn die Eingabe zu groß ist, als dass das Diktat in den Speicher passen könnte?
Ich wäre auch interessiert, ob es einen besseren / schnelleren Weg gibt, um dieses Problem im Allgemeinen zu lösen.