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)
你可以在組裝的時候嘗試使用集合