如何访问 NetworkX 中节点的第一个邻居?
How to access the first neighbor of a node in NetworkX?
我在 NetworkX 中创建了 TestClass
个对象的图表。我有两个 TestClass
对象 obj1
和 obj2
,我想连接它们的第一个邻居。
代码
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)))
我在 NetworkX 中创建了 TestClass
个对象的图表。我有两个 TestClass
对象 obj1
和 obj2
,我想连接它们的第一个邻居。
代码
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)))