Python difflib.get_close_匹配字典值搜索-如何返回键?

Python difflib.get_close_匹配字典值搜索-如何返回键?,python,dictionary,difflib,Python,Dictionary,Difflib,我有一个示例Python字典,如下所示: mydict={1:'Halibut',2:'Halibat',3:'Halibert',4:'Halibut'} difflib.get_close_matches('Halibott',mydict.values(),n=3,cutoff=0.8) ['Halibut', 'Halibut', 'Halibat'] 请注意,其中有非唯一值(项目1和4)。我可以使用difflib.get\u close\u匹配对值进行搜索,如下所示: mydict

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

mydict={1:'Halibut',2:'Halibat',3:'Halibert',4:'Halibut'}
difflib.get_close_matches('Halibott',mydict.values(),n=3,cutoff=0.8)
['Halibut', 'Halibut', 'Halibat']
请注意,其中有非唯一值(项目1和4)。我可以使用difflib.get\u close\u匹配对值进行搜索,如下所示:

mydict={1:'Halibut',2:'Halibat',3:'Halibert',4:'Halibut'}
difflib.get_close_matches('Halibott',mydict.values(),n=3,cutoff=0.8)
['Halibut', 'Halibut', 'Halibat']

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

不,我认为您无法使用difflib.get\u close\u 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']]

如果答案帮助您解决了问题,请将其标记为正确答案,或者如果需要任何其他澄清,您可以对现有答案进行评论。