2017-03-16 14 views
2

mydictのID番号をキーに持つ辞書があり、いくつかの文字列を評価します。私はmydictのすべての他の値の間で比較された値のそれぞれを持つようにしています。そして別の辞書(Python)のすべての組み合わせから辞書を作成してください

、各キーは、ID番号の一対を比較し、その値として文字列比較の実際結果保持するであろう他の辞書myresultsdictでこれらの比較の結果を保存します。

私はitertoolsからの組み合わせで組み合わせを取得する方法を理解していますが、上述のmyresultsdictを組み合わせて闘うのは難しいです。この例では、単純な編集距離(Levenshtein.distance)を使用し、結果は 'myresultsdict'の値になります。

from itertools import combinations 
import Levenshtein 

mydict = {'01': "stringstringstringblah", 
      '02': "blahstringstringstringblah", 
      '03': "stringstringstringblahblahblah"} 

誰かが私を比較ユーザID文字列のタプルを持つようにmyresultsdictを構築することができます方法についてのいくつかのヒントを提供することができ(すなわち('01','02')('01','03')、など)とそれらのキーとして、それぞれの編集距離結果に各?へシンプルソリューション以下

答えて

1

(私は、辞書に載っていないからな組み合わせを見つけるために、リストを使用していた行う方法を見つけ出すことができるすべてのための謝罪は、私は私の試みの多くのコードを提供することはできません)ですあなたの仕事を達成してください。 をmydictのキーに使用して、必要なタプルを返します。各タプルについて、私は距離を計算し、それぞれの結果をmyresultsdictに更新します。

タプルが既に辞書に存在する場合、以前の値(距離)が上書きされることに注意してください。

from itertools import combinations 
import Levenshtein 

mydict = {'01': "stringstringstringblah", 
      '02': "blahstringstringstringblah", 
      '03': "stringstringstringblahblahblah"} 

myresultsdict = {} 
for a, b in combinations(mydict.keys(), 2): 
    myresultsdict[(a, b)] = Levenshtein.distance(mydict[a], mydict[b]) 

print(myresultsdict) 

出力:

{('01', '02'): 4, ('03', '02'): 12, ('03', '01'): 8} 
関連する問題