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