结合的 itertools.groupby ( 文档 ),排序和 dict 理解可以让你开始:
itertools.groupby
dict
from itertools import groupby edges = [(1, 2), (2, 3), (1, 3)] adj = {k: [v[1] for v in g] for k, g in groupby(sorted(edges), lambda e: e[0])} # adj: {1: [2, 3], 2: [3]}
这将按其源节点对边进行排序和分组,并存储a list 每个源节点的目标节点数。现在您可以访问所有相邻节点了 1 通过 adj[1]
list
1
adj[1]