3

ある種の初歩的な検索エンジンを構築しているとしましょう。検索結果として文字列のリストがあり、最も一致する結果が一番上になるように検索結果のリストを並べ替えたいと考えています。

私の現在のコードは次のようになります(例として名前付きパラメーター)

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()

その後どうすればいいのかわからないratio。リストを でソートする必要があることはわかっていますratioが、どうすればよいでしょうか?

4

2 に答える 2

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

また、逆の順序が必要な場合:

>>> sorted(a, key=lambda x: difflib.SequenceMatcher(None, x, b).ratio(), reverse=True)
['spam', 'spammy', 'eggs', 'eggy']
于 2013-07-28T00:08:42.107 に答える