假设我有一个未定义文本文件名的目录。所以我想检查每个单词中有多少单词。由于这些文件可以有很大的尺寸,我想知道用Python最有效的方法是什么。这种经典的方法看起来并不理想:
for file in files:
with open(file) as f:
content = f.readlines()
for word in words:
if word in content:
count+=1
我的问题是:
答案 0 :(得分:3)
第一步是不使用readlines() - 它会将整个文件的内容一次性转储到内存中,因此除了内存复杂性之外的时间复杂性是直接的O(n *米)。你可以通过使用readline()代替它,逐行读取它直到EOF来减少它。
时间方面,你正在寻找某种类型的词典 - 可能是collection.Counter。它允许O(1)查找已遇到的单词。