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)
你可以在组装的时候尝试使用集合