0

我想将一个字符串与其他字符串列表进行比较并获得最相似的。我可以在 python 中使用 difflib 来做到这一点。但是,我想要做的是获取列表中的顺序。

from difflib import get_close_matches

a = ['abcde', 'efghij', 'klmno']
b = 'cdefgh'
print get_close_matches(b, a)

该代码将返回['efghij']正确的。但是,如果我想得到 1 怎么办,因为a[1] = 'efghij'

而且,我如何获得相似率?我应该再次计算它SequenceMatcher(None, b, a).ratio()吗?

4

2 回答 2

0

这给了你第一次出现:

>>> ['abcde', 'efghij', 'klmno'].index('efghij')
1
于 2013-05-29T16:02:40.887 回答
0

Mikes 的回答是正确的,但是如果需要速度并且您需要多次查找,那么我建议您使用 dict:

a_hash = dict(zip(a, range(len(a))))
a_hash['efghij'] # prints 1

我从未使用过 difflib,但我猜你会执行以下操作:

import difflib
difflib.SequenceMatcher(None, b, a[1]).ratio()
# or
difflib.SequenceMatcher(None, b, a_hash[difflib.get_close_matches(b, a)]).ratio()
# both returns 0.66666
# presumably because both strings have de and 2/6 = 0.666

那是你要的吗?

于 2013-05-29T16:22:29.017 回答