CocoaChina 11-11
python – 如何通过最佳匹配(difflib ratio)对字.
index_new4.html
../../../zaker_core/zaker_tpl_static/wap/tpl_keji1.html

 

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

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

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

之后我不知道如何处理比率 . 我知道我必须按比例对列表进行排序 , 但我该怎么做?

最佳答案

>>> 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' ]

相关文章
评论
没有更多评论了
取消

登录后才可以发布评论哦

12 我来说两句…
打开 ZAKER 参与讨论