微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何访问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.neighbors(n)访问邻居,其中n是节点。

由于G.neighbors在相邻节点上返回了迭代器,因此要使用列表访问器,您首先需要将迭代器包装在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)))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。