我有一个名为
在上述示例中,期望的输出为一个列表,其中每个元素也是一个列表:
my_file
的大文件(5Gb)。我有一个名为my_list
的列表。读取文件中的每一行,并找出与my_list
中的项目匹配的行中的项,如果找到,则创建一个名为matches
的新列表。此列表将包含从my_file
和my_list
中匹配的项所在的行中提取出的项。这里是我的尝试:def calc(my_file, my_list)
matches = []
my_file.seek(0,0)
for i in my_file:
i = list(i.rstrip('\n').split('\t'))
for v in my_list:
if v[1] == i[2]:
item = v[0], i[1], i[3]
matches.append(item)
return matches
这是my_file
文件中的一些行:
lion 4 blue ch3
sheep 1 red pq2
frog 9 green xd7
donkey 2 aqua zr8
以下是 my_list
中的一些项目:
intel yellow
amd green
msi aqua
在上述示例中,期望的输出为一个列表,其中每个元素也是一个列表:
[['amd', 9, 'xd7'], ['msi', 2, 'zr8']]
我的代码目前能够工作,尽管速度非常缓慢。使用生成器或序列化会有所帮助吗?谢谢。
open("my_file","r").read()
所需的时间。 - S.Lottfor _ in open('my_file'): pass
可能更合适。 - jfsmy_file
版本上运行了数字,时间约为1小时运行程序,打开文件少于一分钟。 - drbunsen