Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按相关性筛选列表和排序项目_Python_Search_Filtering - Fatal编程技术网

Python 按相关性筛选列表和排序项目

Python 按相关性筛选列表和排序项目,python,search,filtering,Python,Search,Filtering,我有一个字符串列表: my_list = ['Paul', 'Robinson', 'Hismith', 'Smith'] 我需要对其进行过滤,并根据相关性对结果进行排序: > filter_list(my_list, 'smith') > ['Smith', 'Hismith'] > > filter_list(my_list, 'paul') > ['Paul'] 我的列表很小,如果我能使用尽可能少的逻辑/库就好了 你会怎么做 谢谢 很难说,“相关性”是什

我有一个字符串列表:

my_list = ['Paul', 'Robinson', 'Hismith', 'Smith']
我需要对其进行过滤,并根据相关性对结果进行排序:

> filter_list(my_list, 'smith')
> ['Smith', 'Hismith']
> 
> filter_list(my_list, 'paul')
> ['Paul']
我的列表很小,如果我能使用尽可能少的逻辑/库就好了

你会怎么做


谢谢

很难说,“相关性”是什么。在我的回答中,我只接受搜索的
单词
在元素中,并按其长度对结果进行排序(很有可能100%匹配首先出现):


尝试以下方法(您可能需要调整
cutoff=
选项):


+1即使这不是按“相关性”排序,不管Marco是什么意思。@TimPietzcker-我添加了一些“相关性”功能。这正是我的实现,但没有相关性部分。我只需要简单的相关性逻辑,以便用户可以更有用的方式使用有序列表。首先出现的完整匹配是最重要的一点(可能是唯一的一点)。答案很好(虽然没有相关性)。@MarcoFucci在我的答案中没有定义“相关性”,所以我在“最相关的”=“最相似的”上下了赌注
def filter_list(li, word):
    return sorted((elem for elem in li if word.lower() in elem.lower()), key=len)
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']