Python difflib.get_close_匹配字典值搜索-如何返回键?
我有一个示例Python字典,如下所示: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
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']]
如果答案帮助您解决了问题,请将其标记为正确答案,或者如果需要任何其他澄清,您可以对现有答案进行评论。