我有一个单词组合列表,比如“brown fox”,还有一大堆要检查的句子。我只想知道列表中的元素在句子中出现的次数。
我有一个可行的解决方案,但我想让它更快。所以我只想有一个意见或任何其他方式来做事情。你知道吗
没有区分大小写的。你知道吗
当我的关键字列表很小的时候,我的解决方案效果很好。 如果我的关键词列表是80个元素,而我的句子只有两三个单词呢?会很慢的。有什么方法可以改进解决方案吗?你知道吗
harry_line = "The Dark Lord Voldemort is
shooting another shooter who claimed to be Dark Lord."
keywords = ['Dark Lord', 'shooter', 'plan', 'poncho', 'brown fox', 'ugly cake piece']
print(sum(harry_line.count(phrase) for phrase in keywords))
在上面的例子中,黑魔王发生了两次,射手发生了一次,因此给出了3的输出,这是正确的。你知道吗
因为the OP would like a real answer,一个简单的可能性列表,按照尝试的顺序:
multiprocessing
模块来并行化Aho扫描。你知道吗如果你想提高速度,你可以试着数一数单词,然后对列表/元组中的单词求和。你知道吗
这个方法只会是O(n),或者可能是O(n×log(n))而不是O(n^2),就像你的漂亮的小内行那样。它利用了
dict
类型的接近常量的查找时间。你知道吗相关问题 更多 >
编程相关推荐