我有一个示例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),或者在获得结果后是否必须使用反向查找搜索?
答案 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']]