2014-02-28 185 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