我有两个文本文件,第一个的简化版本如下所示:
第一个字段(字母)是唯一值,第二个字段(数字)不是唯一的。该文件有7行,真实文件有超过一百万行。第二个文件如下所示:
它有一个字段,就像第一个文件一样,它是唯一的。第二个文件中的所有值都在第一个文件中,但反之亦然。所以第二个文件的条目较少。它也没有第二个字段(数字)!
我的问题是:将第二个文件中的值与第一个文件的值匹配并找到相应的数字的最快方法是什么?所以我的目标是得到这个:
这就是我现在正在做的事情:
with open("file_2") as f2:
for l in f2:
with open("file_1") as f1:
for line in f1:
if l["letter"] == line["letter"]:
print(line["number"])
但这种方法需要几天时间,有更快的方法吗?我已经阅读了有关集合但是用于检查字母是否在文件中,然后我无法检索该数字。
答案 0 :(得分:1)
我认为您多次读取file_1(它是file_2的行数)
我认为你最好只读一次file_1。
使用file_2
中的键(字母)过滤file_1的数据def parse(line):
# DO SOMETHING
return (letter, number)
def getletter(line):
# DO SOMETHING
return letter
with open("file_2") as f2:
letters = map(getletter, f2.readlines)
with open("file_1") as f1:
letter_number = map(parse, f1.readlines)
result = list(filter(lambda x: x[0] in letters, letter_number))
# result is (letter, number) entries