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')
in sudah tentu lebih pantas daripada find kerana yang pertama memerlukan lebih sedikit carian atribut, panggilan fungsi dan lebih banyak operasi perbandingan daripada yang terakhir:
Saya menukar kod anda supaya lebih mudah:
(Menukarnya berdasarkan cadangan @evian)
(Kembali kemudian untuk menerangkan...)
Soalan yang saya jawab: Python-QA
in
sudah tentu lebih pantas daripadafind
kerana yang pertama memerlukan lebih sedikit carian atribut, panggilan fungsi dan lebih banyak operasi perbandingan daripada yang terakhir:Jika anda mahu pergi lebih pantas, pertimbangkan untuk menggunakan Rust :-)
Selain itu, kod anda tidak ditulis dengan baik. Adalah disyorkan untuk menggunakan dengan bukannya menutup secara manual untuk operasi fail.
Kerumitan masa dalam set ialah O(1)
Kerumitan masa dalam senarai ialah O(n)
Anda boleh cuba menggunakan set semasa memasang