Python NetworkX获取应用权重的节点阶数
我正在使用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
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)]