【发布时间】:2015-12-28 13:43:15
【问题描述】:
我有一些(通常
有一个 python 字典,其中键是类似格式的字符串,例如'bcccd',密钥长度从 10 到 100 个符号不等。字典有 半百万 个条目。
我需要将我的初始字符串与字典的值相匹配,或者找出字典中没有正确的值。匹配条件:字典键应该在字符串中的某处(严格匹配)。
就计算速度而言,最好的方法是什么? 我觉得应该有一些棘手的方法来散列我的初始字符串和字典键,以应用一些巧妙的子字符串搜索方式(如 Rabin-Karp 或 Knuth-Morris-Pratt)。或者后缀树状结构可能是一个很好的解决方案?
【问题讨论】:
-
在这种情况下,试一试还不够吗?
-
Python 中的
in运算符是严格匹配的,所以你可以使用它。它也是内置的,因此速度相当快。 -
字典在这里不起作用,你基本上得到了一个字符串列表(你的键)和更长的字符串。 Aho-Corasick 在这里非常适合 - 特别是如果您的字典或多或少稳定的话。
标签: python algorithm search text substring