如何查找网络中没有传出边缘的节点?



我正在尝试在networkx的二合字母中查找没有传出边的节点。

有没有办法做到这一点?我找到了隔离物,但它找到了没有传入或传出边缘的边缘,我不希望这样。

如果G是你的DiGraph,你可以通过

(node for node, out_degree in G.out_degree_iter() if out_degree == 0)

"返回迭代器的方法已被删除">

在NetworkX 2.x中,所以@fuglede的答案需要一个小的更新:

(node for node, out_degree in G.out_degree() if out_degree == 0)

.out_degree在 2.x 中提供的视图/报告 API 提供了(node, out_degree)对的 OutDegreeView,使这种方法比 @Fony Lew 的方法稍微简单一些。

我在out_degree_iter()时遇到了问题,因为它返回错误。所以我在 NetworkX 文档中搜索了其他解决方案,发现这是有效的。(G是一个DiGraph(

[node for node in G.nodes if G.out_degree(node) == 0]

请注意,如果找到传入的度数或边缘。您只需从out_degree更改为in_degree

参考:网络x。DiGraph.out_degree

最新更新