如何以python列表或numpy数组的形式形成邻接表?

How to form adjacency list in the form of python list or numpy array?

networkx 的 generate_adjlist() 模块的输出有点奇怪,我试图以列表或 numpy 数组的形式获取图形的邻接列表。怎么做?任何提示表示赞赏。谢谢

G = nx.lollipop_graph(4, 3)
for line in nx.generate_adjlist(G):
print(line)
[0] 
0 1 2 3
1 2 3
2 3
3 4
4 5
5 6
6

nx.generate_adjlist returns 图中的一条线,采用邻接表格式。您可以使用以下命令从结果生成嵌套列表:

G = nx.lollipop_graph(4, 3)
np.array(list(nx.generate_adjlist(G)))
# array(['0 1 2 3', '1 2 3', '2 3', '3 4', '4 5', '5 6', '6'], dtype='<U7')

Numpy 数组适用于同类数据结构,即适用于内部列表大小相同的列表。如果您尝试从以下内容构建一个数组,您会看到您得到了一个列表数组。你可以做的是从结果构建一个嵌套列表:

list(map(str.split, nx.generate_adjlist(G)))
[['0', '1', '2', '3'],
 ['1', '2', '3'],
 ['2', '3'],
 ['3', '4'],
 ['4', '5'],
 ['5', '6'],
 ['6']]

根据评论中提到的问题,我们可以获得一个枚举字典(请注意,有效的列表将以相同的方式索引):

dict(enumerate(map(str.split, nx.generate_adjlist(G))))
{0: ['0', '1', '2', '3'],
 1: ['1', '2', '3'],
 2: ['2', '3'],
 3: ['3', '4'],
 4: ['4', '5'],
 5: ['5', '6'],
 6: ['6']}