首页 > 解决方案 > 前任节点的属性

问题描述

我是 Python 中 networkx 的新手。我正在尝试获取 DiGraph 中两个或多个前驱节点的属性。

我已经实现了相反的效果:使用邻居获取后继节点的属性,如下所示:

A = nx.DiGraph()

A.add_node('S1', e=1)
A.add_node('S2', e=2)
A.add_node('S3', e=3)

A.add_edges_from([('S2','S1'),('S3','S1')])

for neighbor in A.neighbors('S1'):
    print(A.nodes[neighbor]["e"])

但是,我想获取前辈的属性。问题是在有向图中,邻居只检索后继者而不是前任者。

根据我附上的图片,我想获取S1的前辈属性。我已尝试使用命令pred,如下所示,但它似乎不起作用:

for pred in A.pred('S2'):
    print(A.nodes[pred]["e"])

Output:
'AdjacencyView' object is not callable

在此处输入图像描述

谢谢大家的帮助!

标签: pythonnetworkxgraph-theory

解决方案


你有Graph.predecessors这个:

nodes = A.nodes(data=True)
for pred in A.predecessors('S1'):
    print(nodes[pred])
{'e': 2}
{'e': 3}

要专门保存属性e

out = dict()
nodes = A.nodes(data=True)
for pred in A.predecessors('S1'):
    out[pred] = nodes[pred]['e']

out
# {'S2': 2, 'S3': 3}

推荐阅读