gpt4 book ai didi

python - difflib 根据序列的顺序返回不同的比率

转载 作者:行者123 更新时间:2023-11-28 23:02:52 28 4
gpt4 key购买 nike

有谁知道为什么这两个返回不同的比率。

>>> import difflib
>>> difflib.SequenceMatcher(None, '10101789', '11426089').ratio()
0.5
>>> difflib.SequenceMatcher(None, '11426089', '10101789').ratio()
0.625

最佳答案

This给出了匹配工作原理的一些想法。

>>> import difflib
>>>
>>> def print_matches(a, b):
... s = difflib.SequenceMatcher(None, a, b)
... for block in s.get_matching_blocks():
... print "a[%d] and b[%d] match for %d elements" % block
... print s.ratio()
...
>>> print_matches('01017', '14260')
a[0] and b[4] match for 1 elements
a[5] and b[5] match for 0 elements
0.2
>>> print_matches('14260', '01017')
a[0] and b[1] match for 1 elements
a[4] and b[2] match for 1 elements
a[5] and b[5] match for 0 elements
0.4

它看起来好像在第一个序列与第二个序列上尽可能多地匹配,并从匹配项继续。在这种情况下 ('01017', '14260'),右侧匹配在最后一个字符 0 上,因此右侧不可能有更多匹配。在这种情况下('14260', '01017'),1s匹配,0仍然可以在右边匹配,所以找到两个匹配。

我认为匹配算法对于排序序列是可交换的。

关于python - difflib 根据序列的顺序返回不同的比率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9321669/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com