如何通过最佳匹配(difflib比率)对字符串列表进行排序

ron*_*975 3 python sorting list difflib

让我们说我正在建立各种各样的基本搜索引擎.我有一个字符串列表作为搜索结果,我想在顶部订购具有最佳匹配结果的搜索结果列表.

我当前的代码看起来像这样(命名参数作为示例)

import difflib
def order_by_best_match(search_results=["spam", "eggs", "spammy", "eggy"], search_query="spam"):

    for result in search_results:
        ratio = difflib.SequenceMatcher(None, result, search_query).ratio()
Run Code Online (Sandbox Code Playgroud)

之后我不知道该怎么办ratio.我知道我必须对列表进行排序ratio,但我该怎么做呢?

zha*_*gyu 9

>>> import difflib
>>> a = ["spam", "eggs", "spammy", "eggy"]
>>> b = 'spam'
>>> sorted(a, key=lambda x: difflib.SequenceMatcher(None, x, b).ratio())
['eggy', 'eggs', 'spammy', 'spam']
Run Code Online (Sandbox Code Playgroud)

另外,如果您想要相反的顺序:

>>> sorted(a, key=lambda x: difflib.SequenceMatcher(None, x, b).ratio(), reverse=True)
['spam', 'spammy', 'eggs', 'eggy']
Run Code Online (Sandbox Code Playgroud)