比较字典键中的元组元素
我有一个字典,这个字典的键是一个元组。我想通过比较元组里的所有元素,来计算字典中所有键之间的汉明距离。
我的字典如下:
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 个回答
2
你的代码有点混乱。你想要获取字典中第 i
个和第 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)