我有一个线大CSV文件看起来像如何重新映射ID,以连续的数字迅速
stringa,stringb
stringb,stringc
stringd,stringa
我需要它这样的ID被连续编号为0转换在这种情况下会工作
0,1
1,2
3,0
我当前的代码看起来像:
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类型的字典使用大量的内存黯然我的投入很大。
当输入过大的字典,以适应在内存
我也有兴趣,如果有一般的解决这个问题的一个更好/更快的方法我能做些什么。
使用字典/哈希映射的一般策略是正确的,虽然你做得有点笨拙。当你说你的输入太大而不适合记忆时,我们在这里说什么?如果没有查询表(字典)或其他权威性参考,您将无法保证唯一性或连贯性。 –
@NathanielFord我很想知道一个不太笨拙的开始。 – eleanora
当你连续地从你给出的例子中说你想要一个输出0,1,2,3等? –