如何访问 NetworkX 中节点的第一个邻居?

How to access the first neighbor of a node in NetworkX?

我在 NetworkX 中创建了 TestClass 个对象的图表。我有两个 TestClass 对象 obj1obj2,我想连接它们的第一个邻居。

代码

first_node = [node for node in G.nodes() if node==obj1][0]
second_node = [node for node in G.nodes() if node==obj2][0]                
G.add_edge(first_node.neighbours[0], second_node.neighbours[0])

我收到一条错误消息,指出 TestClass 对象没有属性 neighbors

如何将这两个对象作为 Graph 中的节点进行访问以与其相邻节点一起工作?

使用方法 Graph.neighbors(n) 访问邻居,其中 n 是一个节点。

由于 G.neighbors returns 是相邻节点上的迭代器,要使用列表访问器,您首先需要将迭代器包装在 list 初始值设定项中。

G.add_edge(list(G.neighbors(first_node))[0], list(G.neighbors(second_node))[0])

更简洁的方法是在迭代器上调用 next(),这样可以避免创建新的列表对象并消除索引访问器。

G.add_edge(next(G.neighbors(first_node)), next(G.neighbors(second_node)))