【发布时间】:2016-10-19 08:23:09
【问题描述】:
我有三个带有列表列表的 txt 文件。
文件 1(9700 行):
ID1, data 1
文件 2(210 万行):
ID1, ID2
文件 3(1100 行):
ID2, data 3
我想制作一个文件 4
- 获取文件 1 中的所有行(ID1 和数据 1)
- 获取该行 ID1 的 ID2。
- 获取该 ID2 的数据 3。
- 在文件 4 中为文件 1 中的所有行保存一个 ID1、数据 1、ID2、数据 3 的文件
我已经用python为它做了一个脚本,但是ATM需要1个小时。
这是它的作用:
file1 = []
file4 = []
file3 = []
final_list.append("ID1, ID2, DATA1, DATA2")
#Import file1
with open('file1.txt') as inputfile: #file 1: around 9.7k
for line in inputfile:
temp = line.strip().split(' ')
file1.append(temp)
#Import file3
with open('file3.txt') as inputfile: #file 3: around 1.1k
for line in inputfile:
temp = line.strip().split(' ')
file3.append(temp)
print len(file1)
#Iterate through file2 (so I only iterate once through this)
with open('file2.txt') as inputfile: #File 2: 2.1 million
for line in inputfile:
temp = line.strip().split(' ')
for sublist in file1: #Only if first element is also in list 1
if sublist[0] == temp[0]:
for sublist2 in file3:
if sublist2[0] == temp[1]:
file4.append([temp, sublist[1], sublist2[1]])
print len(file4)
print file4[:10]
thefile = open('final.txt', 'w')
for item in file4:
thefile.write("%s\n" % item)
thefile.close()
如前所述,提款机需要一个小时。我怎样才能提高性能?我有很多循环,正在考虑是否可以通过某种方式更快地完成......
注意:ID只出现一次,数据可以是重复值
【问题讨论】:
-
您可以通过将文件 1 和文件 3 中的数据加载到字典中(以 ID 为键)来大大加快速度。
标签: python performance file optimization