2014-02-28 228 views
0

我有一本字典,字典的鍵是一個元組。我想通過比較元組內的所有元素來比較字典中的所有鍵來獲取哈明距離。比較字典鍵的元組元素

我的字典是如下:

dic={(1,0,1,1,0,0,1,1,0,1):8, (1,1,0,1,0,1,1,1,0,0):48, ....} 

我試圖做:

haming_dist = [[0]*(len(dic)) for i in range(len(dic))] 
for i in range(len(dic)): 
    for j in range(i+1,len(dic)): 
     count=0 
     for k in range(10): 
      if dic[i][k] != dic[j][k]: 
       count=count+1 
     haming_dist[i][j]=count 

,但沒有奏效。此外,我試圖寫list(dic[i])[k],tuple(dic[i])[k]tuple(dic[i])但沒有任何工作。什麼是正確的方式?

+0

你想做什麼,計算每個獨特的元組存在多少?或者只計算唯一元組的數量? – pajton

+0

我想通過計算元組中非相似元素的數量來計算每個鍵與另一個鍵之間的距離。元組(1,0,0)和(1,1,1)之間的距離是2. – user3281166

+0

您想如何存儲它?我想像一個字典,但那個字典的關鍵是什麼? – pajton

回答

1

你的代碼有點困惑。你試圖獲得字典的i th和j這些鍵,但是你不能這樣做 - 字典沒有排序。你可以做的是把字典的鍵作爲列表,然後遍歷它。試試這個:

keys = list(dic) 

for i in range(len(keys)): 
    for j in range(i+1, len(keys)): 
     count = 0 
     for k in range(10): 
      if keys[i][k] != keys[j][k]: 
       count += 1 
     print "Distance from %s to %s is %d" % (keys[i], keys[j], count) 
+0

非常感謝你這是非常有益的:)。 – user3281166