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.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage