给定在NetworkX中创建的任何图G,我希望能够在创建图之后为G.edges()分配一些权重。所涉及的图形包括网格、erdos reyni、barabasi albert等。
鉴于我的G.edges()
:
[(0, 1), (0, 10), (1, 11), (1, 2), (2, 3), (2, 12), ...]
我的weights
:
{(0,1):1.0, (0,10):1.0, (1,2):1.0, (1,11):1.0, (2,3):1.0, (2,12):1.0, ...}
如何为每个边分配相关权重?在这种情况下,所有权重都是1。
我试着直接将权重添加到G.edges()中,如下所示
for i, edge in enumerate(G.edges()):
G.edges[i]['weight']=weights[edge]
但我有个错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-48-6119dc6b7af0> in <module>()
10
11 for i, edge in enumerate(G.edges()):
---> 12 G.edges[i]['weight']=weights[edge]
TypeError: 'instancemethod' object has no attribute '__getitem__'
怎么了?既然G.edges()
是一个列表,为什么我不能像访问任何其他列表一样访问它的元素?
它失败是因为
edges
是一个方法。documentation说要这样做:
例如,以下对我有效:
但是,您的代码类型确实失败了:
对你来说,我建议
添加这样的边:
g1.add_edge('Mark', 'Edward', weight = 3) g1.add_edge('Joseph', 'Michael', weight = 3) g1.add_edge('Joseph', 'Jason', weight = 4)
然后检查图是否加权:
nx.is_weighted(g1)
按权重大小分类:
下一步显示加权图:
节点
边缘
相关问题 更多 >
编程相关推荐