英語の単語がすべて〜60k単語〜500k文字のファイルがあります。入力として受け取った特定の単語が「英語」であるかどうか(つまり、この単語がリストに含まれているかどうか)をテストします。大きなリストに特定の文字列(Python)が含まれているかどうかを調べる最も効率的な方法
Pythonでこれを行う最も効率的な方法は何でしょうか?
簡単な解決策は、ファイルをリストにロードして、単語がそのリストに含まれているかどうかを確認することです。リストをソートすることができますが、これは複雑さをO(logn)に縮小します。しかし、私はPythonがどのようにリストを検索しているのか、そのような大きなリストがメモリにあればパフォーマンスのペナルティがあるかどうかはわかりません。私は言葉の長さに上限を置くことができるという事実を「乱用することはできますか? (たとえば、最長の長さは15文字です)。
多くのメモリを搭載したマシン上でアプリケーションを実行していますので、スピードとCPU使用率よりもメモリ消費量が少なくて済みます。
おかげ
セットとフロゼンスのスピードの違いはありますか? –
'set'への改善が大きくなることに注意してください。私の場合、要素が重複なしで270.000要素のリストに属していた場合、1000回チェックすると約20-25秒かかりました。それがセットに属しているかどうかをチェックするのは約0.005秒しかかかりません。 – J0ANMM