首页 > 解决方案 > NetworkX 矩阵中的访问条目

问题描述

我使用数据框 df 创建了一个图表:

d = {'node1': ['A','B','C','D','E'], 'node2': ['E','C','B','A','F'],'distance': [3,4,2,6,7]}
df = pd.DataFrame(data=d)

G = nx.Graph()

for i, elrow in df.iterrows():
    G.add_edge(elrow[0], elrow[1], attr_dict=elrow[2:].to_dict())

然后我计算所有对之间的最小未加权距离:

sp = nx.all_pairs_shortest_path(G)
spl = nx.all_pairs_shortest_path_length(G)

但是,当我尝试使用以下方法输出两个节点之间的距离时:

sp["A"]["E"]
spl["A"]["E"]

我收到一条错误消息:

TypeError: 'generator' object is not subscriptable

我确实看到有关于此类错误的帖子,但它们更笼统。由于在这种情况下我们已经有了一个矩阵,我想知道是否有更直接的方法来访问这些条目?

标签: pythonnetworkx

解决方案


也许你应该检查你的 networkx-version。dict我已经意识到在版本 1.1 和 2.0 之间从s 到生成器 的函数返回类型发生了变化。

示例nx.all_pairs_shortest_path_length

首先尝试通过以下方式打印出生成器的内容

print(*sp)         # or
print(list(spl))

那么您可能会看到如何进行。


推荐阅读