我有一个大的csv文件,其中的行看起来像
stringa,stringb
stringb,stringc
stringd,stringa
Run Code Online (Sandbox Code Playgroud)
我需要转换它,以便id从0开始连续编号.在这种情况下,以下方法可行
0,1
1,2
3,0
Run Code Online (Sandbox Code Playgroud)
我目前的代码如下:
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
Run Code Online (Sandbox Code Playgroud)
Python dicts遗憾地使用了大量内存,而且我的输入很大.
当输入太大而dict不适合内存时,我该怎么办?
如果有更好/更快的方法来解决这个问题,我也会感兴趣.