について質問がLinear Searching
ありPython
ます。のベースコードを持っているとしましょう
for l in lines:
for f in search_data:
if my_search_function(l[1],[f[0],f[2]]):
print "Found it!"
break
search_data
に格納されている値がどこに存在するかを特定しl[1]
ます。次my_search_function()
のようになります。
def my_search_function(search_key, search_values):
for s in search_values:
if search_key in s:
return True
return False
処理速度を上げる方法はありますか?行 とは多次元リストであり、インデックスを保持する必要があるためBinary
、この場合は検索が機能しません。search_data
私は外側からのアプローチを試みました。
for line in lines:
negative_index = -1
positive_index = 0
middle_element = len(search_data) /2 if len(search_data) %2 == 0 else (len(search_data)-1) /2
found = False
while positive_index < middle_element:
# print str(positive_index)+","+str(negative_index)
if my_search_function(line[1], [search_data[positive_index][0],search_data[negative_index][0]]):
print "Found it!"
break
positive_index = positive_index +1
negative_index = negative_index -1
ただし、これによる速度の向上は見られません。誰もがより良いアプローチを持っていますか? 大量のCSV
ファイルを処理していて、1 つのファイルの処理時間が 00:15を超えているため、処理速度を半分に下げたいと考えています。これは、30 個以上のファイルのバッチを処理しているため許容できません。基本的に、私が検索しているデータは基本的に SKU です。からの値はlines[0]
次のようAS123JK
になる可能性があり、その値の有効な一致はAS123
. ['AS123', 'AS123J', 'AS123JK']
したがって、このシナリオでは理想的ではないのような値を分解する必要がない HashMap ルックアップで部分一致を行う方法が存在しない限り、HashMap はここでは機能しません。ありがとう!