比较字典键中的元组元素

0 投票
1 回答
1704 浏览
提问于 2025-04-17 20:23

我有一个字典,这个字典的键是一个元组。我想通过比较元组里的所有元素,来计算字典中所有键之间的汉明距离。

我的字典如下:

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)

撰写回答