Итак, здесь есть несколько проблем.
Во-первых, есть лучший способ создать диктовку, чем то, что вы делаете.Фактически, он в основном уже встроен. G.degree
уже является объектом, похожим на диктовку, поэтому G.degree[node]
даст степень node
.
Если вы действительно хотите, чтобы это было диктом, лучшимспособ сделать это, вероятно,
deg_dict = dict(G.degree)
Теперь давайте посмотрим на ошибку, которую вы получаете.G.nodes()
- это не список (это тоже что-то вроде диктанта).Поэтому, если вы установите nodes=G.nodes()
, тогда nodes
не будет списком.Здесь nodes[0]
пытается вернуть атрибуты узла 0
(и для чего это стоит, если ваши узлы не имеют каких-либо атрибутов nodes[node]
вернет пустой dict).Но (я считаю) 0
не является узлом в вашем графике G
.Так вот в чем смысл вашего сообщения об ошибке.
Кроме того, как правило, если вы когда-либо делаете n=len(x)
, а затем for i in range(n):
, вы почти всегда действительно хотите сделать for name in x:
или если вы действительнонужен индекс, вы можете сделать for i, name in enumerate(x)
.
Так что если вы хотите использовать подход, который вы использовали,
for i, node in nodes:
deg_dist[node] = degree[i]