从字典的键中比较元组元素

时间:2014-02-28 19:25:16

标签: python

我有一本字典,字典的键是一个元组。我想通过比较元组中的所有元素来比较字典中的所有键来获得haming距离。

我的字典如下:

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]),但没有任何效果。什么是正确的方法?

1 个答案:

答案 0 :(得分:2)

您的代码有点混乱。您正试图获取该词典的ij个键,但您不能这样做 - 词典不会被命令。你可以做的是获取dict的键作为列表,然后迭代它。试试这个:

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)