python - 列表中字符串之间的字母组合

标签 python performance python-2.7 combinations

我正在尝试比较给定字符串与列表的差异。准确地说,我正在尝试将给定单词与我的单词列表进行比较(如果该单词只有一个字母不同)。

list = ['fake','bake','sake','rake'] #probably a set

如果给定的单词是take,那么结果将返回fakeakeakesake

如果单词是bare,那么返回的是bake

我计划执行此操作的方法是将给定的单词拆分为并启动一个循环,以将该单词的每个字母与字典列表(a、b、c)互换。在循环的每次迭代中,我计划检查这个单词是否在我的单词列表中。

我只计算了 4 个字母的单词,我必须执行大约 26^4 次循环才能检查每个字母组合是否与我的单词列表相匹配。

<小时/>

有人可以告诉我一种有效的方法来检查单词的组合吗?

最佳答案

jellyfish library可以计算单词之间的大量距离。使用这个轮子可能比自己发明一个轮子更好。

来自示例页面:

>>> import jellyfish
>>> jellyfish.levenshtein_distance('jellyfish', 'smellyfish')
2
>>> jellyfish.jaro_distance('jellyfish', 'smellyfish')
0.89629629629629637
>>> jellyfish.damerau_levenshtein_distance('jellyfish', 'jellyfihs')
1

因此适用于您的问题:

import jellyfish
target = 'take'
list = ['teak','fake','bake','sake','rake','sale']
outlist = [x for x in list if jellyfish.levenshtein_distance(x,target) == 1]

print outlist
['fake', 'bake', 'sake', 'rake']

关于python - 列表中字符串之间的字母组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19259553/

相关文章:

python - __init__() 得到了一个意外的关键字参数 '_job'

html - 我在静态文件夹中的图像没有显示

python - 如何从 argparse 获取参数名称?

Python - 奇怪/意外的行为 - 运算符的优先级

javascript - 获取所有不匹配Javascript中的正则表达式模式的字符

performance - Mapbox 性能 - 单独图层、setData 和过滤器

python - 如果当前值大于现有最小值,则更新 mysql 中的表,否则忽略该更新

python - 在 Cython 中使用 regex.h C 库

python - 如何用python过滤ip public和ip private

android - 由于方向改变,onActivityResult 无法调用