我正在处理一个大的txt文件,总共有8050000行.这些行的一个简短例子是:
usedfor zipper fasten_coat
usedfor zipper fasten_jacket
usedfor zipper fasten_pant
usedfor your_foot walk
atlocation camera cupboard
atlocation camera drawer
atlocation camera house
relatedto more plenty
Run Code Online (Sandbox Code Playgroud)
我编写了一个python代码来读取行,并将它们存储为字典.我的代码是:
dicCSK = {}
for line in finCSK:
line=line.strip('\n')
try:
r, c1, c2 = line.split(" ")
except ValueError: print line
if c1 not in dicCSK.keys():
dicCSK[c1]= []
str1 = r+" "+c2
dicCSK[c1].append(str1)
Run Code Online (Sandbox Code Playgroud)
但是,我运行该程序超过20个小时,它仍在运行.那么有没有更好的方法将它们存储在字典中?我的代码太慢了.谢谢.
这是一个错误:它生成字典中所有键的列表,然后扫描它.
if c1 not in dicCSK.keys():
dicCSK[c1]= []
Run Code Online (Sandbox Code Playgroud)
代替:
if c1 not in dicCSK:
dicCSK[c1] = []
Run Code Online (Sandbox Code Playgroud)
或者,使用a defaultdict来避免检查.
dicCSK = collections.defaultdict(list)
for line in finCSK:
line=line.strip('\n')
try:
r, c1, c2 = line.split(" ")
except ValueError:
print line
dicCSK[c1].append(r+" "+c2)
Run Code Online (Sandbox Code Playgroud)
此外,您可能还希望dicCSK[c1].append(r+" "+c2)语句在其他else条款下,try/except即使存在ValueError异常也会执行.