按相关性过滤列表和订购商品

Mar*_*cci 2 python search filtering

我有一个字符串列表:

my_list = ['Paul', 'Robinson', 'Hismith', 'Smith']
Run Code Online (Sandbox Code Playgroud)

我需要过滤它并按相关性排序结果:

> filter_list(my_list, 'smith')
> ['Smith', 'Hismith']
> 
> filter_list(my_list, 'paul')
> ['Paul']
Run Code Online (Sandbox Code Playgroud)

我的列表很小,如果我可以使用尽可能少的逻辑/库,那就太好了.

你会怎么做?

谢谢!

Jon*_*nts 7

尝试类似下面的内容(你可能想调整cutoff=选项):

import difflib

my_list = ['Paul', 'Robinson', 'Hismith', 'Smith']
print difflib.get_close_matches('Paul', my_list)
# ['Paul']
print difflib.get_close_matches('Smith', my_list)
# ['Hismith', 'Smith']
Run Code Online (Sandbox Code Playgroud)

  • @MarcoFucci"相关性"的定义并没有在我的回答中定义,所以我采取了"最相关"="最相似"的说法 (2认同)

eum*_*iro 6

很难说,什么是"相关性".在我的回答中,我只接受所寻求的word是在元素内并按结构长度排序(100%匹配的好机会首先出现):

def filter_list(li, word):
    return sorted((elem for elem in li if word.lower() in elem.lower()), key=len)
Run Code Online (Sandbox Code Playgroud)