由于我很新,这个问题肯定听起来很愚蠢,但我不知道如何处理这个问题。
我正在尝试获取节点列表,并且我想在所有节点的有序数组中创建一个前驱和后继数组的每个节点。
目前我的代码如下:
nodes = self.peers.keys()
nodes.sort()
peers = {}
numPeers = len(nodes)
for i in nodes:
peers[i] = [self.coordinator]
for i in range(0,len(nodes)):
peers[nodes[i%numPeers]].append(nodes[(i+1)%numPeers])
peers[nodes[(i+1)%numPeers]].append(nodes[i%numPeers])
# peers[nodes[i%numPeers]].append(nodes[(i+4)%numPeers])
# peers[nodes[(i+4)%numPeers]].append(nodes[i%numPeers])
最后两行应该用于创建跳过图,但这并不重要。问题是它不能真正可靠地工作,有时会跳过前任或后继,而是使用下一个,依此类推。这是正确的还是有更好的方法来做到这一点?基本上我需要使用彼此的某些偏移来获得数组索引。
有什么想法吗?
答案 0 :(得分:2)
我几乎敢打赌,当错误发生时,节点中的值会有重复,这会导致同级词典混淆。您的代码假定节点中的值是唯一的。