python - 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
我确实看到有关于此类错误的帖子,但它们更笼统。由于在这种情况下我们已经有了一个矩阵,我想知道是否有更直接的方法来访问这些条目?
解决方案
也许你应该检查你的 networkx-version。dict
我已经意识到在版本 1.1 和 2.0 之间从s 到生成器 的函数返回类型发生了变化。
示例nx.all_pairs_shortest_path_length
:
首先尝试通过以下方式打印出生成器的内容
print(*sp) # or
print(list(spl))
那么您可能会看到如何进行。
推荐阅读
- ios - 理解具有泛型约束的泛型
- cython - cython 的 setup.py 中的 language_level 有什么作用?
- mysql - 如何根据条件对 MySQL 中的行进行分组
- c# - DI & MVC:控制器中的依赖注入有什么意义?
- java - Maven:在 pom.xml 中编译外部依赖项
- java - Xlint:adviceDidNotMatch 警告由于 pom.xml 文件中的 aspectj-maven-plugin
- swift - DispatchQueue.main.asyncAfter(deadline: ) 在命令行应用程序中不起作用
- vb.net - 没有数据写入 xml 文件
- wso2 - WSO2 ESB Aggregate Mediator 发送的消息多于发送的数量
- react-native - React Native - 添加新包时无法在 Android 上构建