2

我检查了 difflib 的文档,我对difflib.SequenceMatcher.ratio()实际工作方式感到困惑。考虑一下:

s = difflib.SequenceMatcher(None, "hey here" , "hey there").ratio()
print s 

s = 0.9411764705882353
我想知道它是如何计算的。通过实际查看一个字符串与其他字符串的偏差来比较 2 个字符串。对于 2 个字符串ab文档说:

差异被计算为“我们需要对'a'做什么才能将其更改为'b'?”

还有类似的东西:

对于 b 中的 x,b2j[x] 是 x 出现的索引列表(进入 b);垃圾元素不出现

请解释上面的s示例。

4

1 回答 1

1

从文档:

其中 T 是两个序列中元素的总数,M 是匹配数,即 2.0*M / T。

在这种情况下,T 是 17,因为第一个字符串有 8 个字符,第二个字符串有 9 个。M 是 8,因为第一个字符串中的八个字符与第二个字符串中的字符匹配。2 * 8 / 17 等于 0.9411764705882353。

于 2014-05-16T14:21:42.687 回答