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

如何在Networkx中快速找到入边完全相同的节点组?

在NetworkX中找出入边完全相同的节点组

核心思路是通过节点的入邻接节点集合作为标识,将拥有相同标识的节点归类到同一组。具体实现步骤如下:

实现代码

import networkx as nx
from collections import defaultdict

# 1. 构建示例图
G = nx.DiGraph()
edges = [(1, 2), (1, 3), (1, 4), (3, 4)]
G.add_edges_from(edges)

# 2. 按入邻接节点集合分组
in_neighbor_groups = defaultdict(list)
for node in G.nodes():
    # 将入邻接节点转为frozenset(可哈希,能作为字典键)
    in_neighbors = frozenset(G.predecessors(node))
    in_neighbor_groups[in_neighbors].append(node)

# 3. 过滤出包含多个节点的组
result = [group for group in in_neighbor_groups.values() if len(group) >= 2]
print(result)  # 输出: [[2, 3]]

关键说明

  • G.predecessors(node):返回当前节点所有入边的来源节点,是NetworkX中获取入邻接节点的高效方法
  • frozenset:将普通集合转为不可变的可哈希类型,这样才能作为字典的键来分组
  • defaultdict:简化分组逻辑,自动为新的入邻接集合创建空列表,避免手动判断键是否存在

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:55:18