Python difflib.get_close_matches搜索字典值 - 如何返回密钥?

时间:2017-11-07 11:53:39

标签: python dictionary difflib

我有一个示例Python字典如下:

mydict={1:'Halibut',2:'Halibat',3:'Halibert',4:'Halibut'}

请注意,其中有非唯一值(第1项和第4项)。我可以使用difflib.get_close_matches对值进行搜索,如下所示:

difflib.get_close_matches('Halibott',mydict.values(),n=3,cutoff=0.8)
['Halibut', 'Halibut', 'Halibat']

是否可以使用difflib返回键(1,4,2),或者在获得结果后是否必须使用反向查找搜索?

1 个答案:

答案 0 :(得分:1)

不,我认为您无法使用difflib.get_close_matches功能获取密钥。但你可以编写自己的函数来做同样的事情 -

def sequence_matcher(input_dict, n, cutoff):
    input_list = input_dict.items()
    matches = list() 
    for key, value in mydict.items():
        if len(matches) > n:
            break
        if difflib.SequenceMatcher(None, 'Halibott', value).ratio() >= cutoff:
            matches.append([key, value])       
    return matches

mydict={1:'Halibut',2:'Halibat',3:'Halibert',4:'Halibut'}
sequence_matcher(mydict, 3, 0.8) # Output - [[1, 'Halibut'], [2, 'Halibat'], [4, 'Halibut']]