如何解决Networkx中终端节点的邻居
我正在尝试获取Networkx中终端节点的邻居节点
import networkx as nx
tail = [1,2,3]
head = [2,3,4]
ed_ls = [(t,h) for t,h in zip(tail,head)]
G = nx.OrderedDiGraph()
G.add_edges_from(ed_ls)
print(G[4])
print(G.in_edges(nbunch=[4]))
我不确定为什么返回空字典。
有什么建议吗?
解决方法
G[4]
返回一个空字典,因为该节点没有传出边。而G.in_edges(nbunch=[4])
返回(3,4)
,它是包含节点4
的边。
如果我理解正确,您是否特别想访问终端节点的邻居?现在,在这种情况下,终端节点的邻居只是该节点的前任(因为该节点没有后继),您只需尝试使用函数Digraph.predecessors:
print(list(G.predecessors(4)))
# Output : [3]
考虑另一个具有更多边的示例:
import networkx as nx
tail = [1,2,3,4,3]
head = [2,5,5]
ed_ls = [(t,h) for t,h in zip(tail,head)]
G = nx.OrderedDiGraph()
G.add_edges_from(ed_ls)
print(list(G.predecessors(5)))
# Output: [4,3]
更新
即使G.neighbors[4]
返回空也返回空结果的原因是,对于DiGraphs,DiGraph.neighbors
和DiGraph.successors
是相同的。您可以从源代码here中看到。由于终端节点没有后继节点,因此我们得到一个空列表。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。