我有一本字典,字典的键是一个元组。我想通过比较元组中的所有元素来比较字典中的所有键来获得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])
,但没有任何效果。什么是正确的方法?
答案 0 :(得分:2)
您的代码有点混乱。您正试图获取该词典的i
和j
个键,但您不能这样做 - 词典不会被命令。你可以做的是获取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)