Для любого графика G, созданного в NetworkX, я хочу, чтобы иметь возможность присваивать некоторые веса G.edges() после, граф создан. Графы включают сетки, erdos-reyni, barabasi-albert и т. Д.NetworkX: как добавить вес к существующему G.edges()?
Учитывая мой 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()
- это список, почему я не могу получить доступ к его элементам, как к любому другому списку?
Хорошо, так что вы предлагаете? – FaCoffee
@ CF84 См. Обновление. –
Спасибо. Поскольку мне позже нужно получить доступ к ключевому ключу данных, связанному с весом (мне нужно вычислить матрицу инцидентов), что бы это было в вашем примере? Я не могу найти его, поэтому я предполагаю, что его нет. Как его добавить? – FaCoffee