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