根据节点属性对 NetworkX 图的节点进行排序

Sort nodes of a NetworkX graph based on a node attribute

我有一个节点很少的 nx 图。所有这些节点都有一个属性“dist”。我想根据节点的“dist”值对节点列表进行排序。我怎么才能得到它? 我试过:

 sorted(G.nodes(data=True))

但是在这里我无法传递 node_attribute 我想根据其对节点进行排序的信息。

此外,如果我有一个节点列表(所有节点的子集),并且我想根据相同的节点属性对它们进行排序,是否可以 不对所有节点进行排序?

您可以使用 key 参数来传递一个函数给 sorted 方法。然后它将根据该函数返回的值对节点进行排序,比如

sorted(G.nodes(), key=lambda n: G.nodes[n]['dist'])

应该可以。如果您要对图中节点的任何子集进行排序,您仍然可以这样做

sorted(list_of_nodes, key=lambda n: G.node[n]['dist'])