Python中的双链接数组

Python中的双链接数组,python,arrays,indexing,overlay,p2p,Python,Arrays,Indexing,Overlay,P2p,因为我是新来的,这个问题听起来肯定很愚蠢,但我不知道如何解决这个问题 我尝试获取一个节点列表,对于每个节点,我想在所有节点的有序数组中创建一个前辈和后辈数组 当前我的代码如下所示: nodes = self.peers.keys() nodes.sort() peers = {} numPeers = len(nodes) for i in nodes: peers[i] = [self.coordinator] for i in

因为我是新来的,这个问题听起来肯定很愚蠢,但我不知道如何解决这个问题

我尝试获取一个节点列表,对于每个节点,我想在所有节点的有序数组中创建一个前辈和后辈数组

当前我的代码如下所示:

    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])
最后两行应该稍后用于创建跳过图,但这并不重要。问题是它不能真正可靠地工作,有时会跳过前一个或后一个,而使用下一个,等等。这是正确的还是有更好的方法?基本上,我需要得到相互之间有一定偏移量的数组索引


有什么想法吗?

我几乎可以打赌,当错误发生时,节点中的值会重复,这会导致对等节点中的字典混淆。代码假定节点中的值是唯一的。

乍一看,这似乎是正确的。您能详细介绍一下发生跳绳的情况吗?也许您正在更改节点的大小而不更新numpers?因为我正在处理字典键的副本,而不是直接处理节点数组,所以这不会发生。我开始怀疑这是否与我如何检测图形中的边有关。作为一个例子,下面的叠加结果在右手边,我们有a->c,b->c,c->b和b->a的情况,而a->c边是不正确的,应该是a->b,这样才能正常工作。奇怪的是,我一直认为keys会返回一个没有重复项的列表。我将用跳过图检查它,看看它是否也有效:-)它会的。字典里不能有重复的键。是的,我同意格伦的观点。您的节点都应该是唯一的,因为它们是字典中的键。奇怪的是,在排序和删除重复项后,它就像一个符咒一样工作:-)我在玩一些代码,也想到了这个(我不知道如何用代码格式化注释):nodes=self.peers.keys()nodes.sort()dnodes=nodes+nodes peers={}(1,len(nodes)+1):n=dnodes[i]peers[n]=[self.coordinator,dnodes[i-1],dnodes[i+1]]