Python NetworkX获取应用权重的节点阶数

Python NetworkX获取应用权重的节点阶数,python,python-2.7,networkx,Python,Python 2.7,Networkx,我正在使用NetworkX创建加权图(不是有向图)。每个节点都有一个节点名和多个具有权重的边。权重始终是正的非零整数 我要做的是得到一个元组列表,其中每个元组表示图中的一个节点(按名称)和节点的加权程度 我可以这样做: the_list = sorted(my_graph.degree_iter(),key=itemgetter(1),reverse=True) In [1]: import networkx as nx In [2]: G = nx.Graph() In [3]: G.a

我正在使用NetworkX创建加权图(不是有向图)。每个节点都有一个节点名和多个具有权重的边。权重始终是正的非零整数

我要做的是得到一个元组列表,其中每个元组表示图中的一个节点(按名称)和节点的加权程度

我可以这样做:

the_list = sorted(my_graph.degree_iter(),key=itemgetter(1),reverse=True)
In [1]: import networkx as nx

In [2]: G = nx.Graph()

In [3]: G.add_edge(1,2,weight=7)

In [4]: G.add_edge(1,3,weight=42)

In [5]: G.degree(weight='weight')
Out[5]: {1: 49, 2: 7, 3: 42}

In [6]: G.degree(weight='weight').items()
Out[6]: [(1, 49), (2, 7), (3, 42)]
但这似乎没有考虑到每个节点的权重。每个节点可能对每个边具有不同的权重(或者它们可能相同,无法知道)

我是否需要编写一个函数来手动执行此操作?我一直在浏览NetworkX文档,而我正在以一种内置的方式来实现这一点(但可能我忽略了它)

如果我必须自己编写函数,我假设我使用带有
weight
标志集的
size()
方法。这似乎只给了我图表中所有权重的总和


非常感谢您的帮助。

您可以使用Graph.degree()方法,使用weight=关键字,如下所示:

the_list = sorted(my_graph.degree_iter(),key=itemgetter(1),reverse=True)
In [1]: import networkx as nx

In [2]: G = nx.Graph()

In [3]: G.add_edge(1,2,weight=7)

In [4]: G.add_edge(1,3,weight=42)

In [5]: G.degree(weight='weight')
Out[5]: {1: 49, 2: 7, 3: 42}

In [6]: G.degree(weight='weight').items()
Out[6]: [(1, 49), (2, 7), (3, 42)]