2017-11-07 4 views
0

次のようにIは、例えばPythonの辞書を持っている:Python difflib.get_close_matches辞書値の検索 - どのようにキーを返すのですか?

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

注意が非一意の値(項目1および4)があること。 difflibを使用して

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

も鍵を返却することは可能です(1,4,2)のか、私は逆引き検索に頼る必要があります:次のように私はdifflib.get_close_matchesを使用して値の検索を行うことができます結果を得た後に?

+0

答えはあなたが親切に正しい答えとしてそれをマーク、またはその他の明確化が必要な場合は、既存の答えにコメントすることができ、あなたの問題を解決する助けている場合。 – GaneshTata

答えて

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']] 
関連する問題