0
私は、テキストファイルの名前が定義されていないディレクトリがあるとします。だから私は、それぞれの中にあるセットのどれくらいの単語があるかをチェックしたい。これらのファイルは巨大なサイズを持つことができるので、私はこれをPythonで最も効率的に使う方法を考えていました。この古典的なアプローチは理想的なものとして見ていない:メモリ内のファイルを扱う最良の方法Python
for file in files:
with open(file) as f:
content = f.readlines()
for word in words:
if word in content:
count+=1
私の質問は以下のとおりです。私はメモリに大容量のファイルを処理する必要がありますどのように
- ?
- この複雑さはO(n * m)です(n =ファイル数、m =#単語数)。これを減らすことは可能ですか?それとも、私を助けるデータ構造がありますか?
はい、メモリの複雑さに関しては正しいですが、readlineを使用すると多くの読み込みが作成されます。それ以上の行を格納できるバッファを使用する方が良いでしょう。 しかし、私は時間に関して言おうとしていることに従っていません。 – m33n
Readlines()はreadline()を繰り返し呼び出すので、同等です。リストの理解とジェネレータの表現の違いに似ていますが、最終的な結果は同じですが、すべてを1つにまとめてやっています。時間ディクテーションを使用すると、すでにカウントされている単語のリストを反復処理しないで、増分との一致を見つけることができます。それはハッシュマップです。 – jkm