非常に大きな単語のリストを処理する必要があり、テキストの一部でそれらの単語が見つかった回数を数える必要があるとします。スケーラビリティの点で最適なオプションはどれですか?
オプション I (正規表現)
>>> import re
>>> s = re.compile("|".join(big_list))
>>> len(s.find_all(sentence))
オプションⅡ(セット)
>>> s = set(big_list)
>>> len([word for word in sentence.split(" ") if word in s]) # O(1) avg lookup time
例: リストが ["cat","dog","knee"] で、テキストが「犬が猫を飛び越えたが、犬が膝を折った」の場合、最終結果は次のようになります: 4
PS他のオプションは大歓迎です