You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NetworkX中获取终端节点邻居返回空字典的问题求助

解决NetworkX中终端节点邻居获取的问题

我来帮你分析下你遇到的问题:

为什么G[4]返回空字典?

在NetworkX的有向图(DiGraph)中,G[node]这个语法返回的是该节点出边对应的邻居节点字典(也就是节点node指向的其他节点)。你的图结构是1→2→3→4,节点4是这条链的终端节点,没有任何出边,所以G[4]自然是空字典,这是符合预期的行为哦。

为什么G.in_edges(nbunch=[4])没得到预期结果?

理论上,你的代码里节点4的入边是(3,4),执行G.in_edges(nbunch=[4])应该返回[(3, 4)]。如果你得到了空结果,可能是这几个原因:

  • 你可能误看了输出,或者运行代码时出现了其他未注意的错误;
  • 极少数情况下可能是NetworkX版本兼容问题(建议确认你使用的NetworkX版本在2.x及以上)。

正确获取终端节点邻居的方法

如果你想获取终端节点的入邻居(也就是指向它的节点),可以用以下几种方式:

方法1:使用predecessors()获取前驱节点

这个方法直接返回所有指向目标节点的邻居:

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)

# 获取节点4的入邻居
print(list(G.predecessors(4)))  # 输出: [3]

方法2:使用in_edges()查看入边

你可以直接传入单个节点(不需要用列表包裹nbunch),这样更清晰:

print(list(G.in_edges(4)))  # 输出: [(3, 4)]

辅助验证:查看节点的度信息

你可以通过度信息确认节点的入度和出度,帮助排查问题:

print("节点4的出度:", G.out_degree(4))  # 输出: 0(没有出边)
print("节点4的入度:", G.in_degree(4))  # 输出: 1(有1条入边)

内容的提问来源于stack exchange,提问作者Natasha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 22:22:46