我有一个字符串列表:
my_list = ['Paul', 'Robinson', 'Hismith', 'Smith']
我需要过滤它并按相关性排序结果:
> filter_list(my_list, 'smith')
> ['Smith', 'Hismith']
>
> filter_list(my_list, 'paul')
> ['Paul']
我的列表很小,如果我可以使用尽可能少的逻辑/库,那就太好了。
你会怎么做?
谢谢!
答案 0 :(得分: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']
答案 1 :(得分:6)
很难说,“相关性”是什么。在我的回答中,我只接受被请求的word
在元素内并按结果排序的结果(100%匹配的好机会首先出现):
def filter_list(li, word):
return sorted((elem for elem in li if word.lower() in elem.lower()), key=len)