import os
import sys
def getinfo(filename) :
info = {}
with open(filename, 'r') as f:
for line in f:
ID, name = line.strip().split()
info[ID] = name
return info
def matchname(info, input_file, output_file) :
with open(input_file, 'r') as reader, open(output_file, 'w') as writer:
for line in reader:
n1, n2, content = line.strip().split()
for ID, name in info.items():
if name in content:
print(n1, n2, name, ID, sep='\t', file=writer)
if __name__ == '__main__':
info_filename = 'aa.txt'
content_filename = 'bb.txt'
result_filename = 'final_output2.txt'
info = getinfo(info_filename)
matchname(info, content_filename, result_filename)
print('done')
改了一下你的代码, 这样应该比较简洁:
(根据 @依云 的建议又改了一下)
(稍后回来补说明...)
我回答过的问题: Python-QA
in
当然比find
快,因为前者比后者少了次属性查找、函数调用,多了次比较操作:想要更快,可以考虑使用 Rust :-)
另外你的代码写得不太好。文件操作建议使用 with 而不是手动关闭。
set的in时间复杂度是O(1)
list的in时间复杂度是O(n)
你可以在组装的时候尝试使用集合