Код:
print(g.nodes(data=True)[0:10])
Взято из Учебник по графику не работает.
Мне пришлось внести два изменения в код, как описано в двух предыдущих вопросах:
Учитывая две уже сообщенные ошибки, которые, как представляется, указывают на более новые версии NetworkX, существует ли некоторая несовместимость с последней версией NetworkX? Я запускаю его в Python 3.7.
Ошибка, которую я получаю после запуска всего кода и получения всех ожидаемых результатов, как описано в руководстве:
Traceback (most recent call last):
File "Drawing-graphs.py", line 44, in <module>
print(list(g.nodes(data=True)[0:10]))
File "/opt/anaconda3/lib/python3.7/site-packages/networkx/classes/reportviews.py", line 277, in __getitem__
ddict = self._nodes[n]
TypeError: unhashable type: 'slice'
Код в руководстве немного длинный, но очень простой. ,Он загружает график и печатает некоторые его части. Вот весь код (без последней строки он делает то, что ожидается без ошибок):
import itertools
import copy
import networkx as nx
import pandas as pd
import matplotlib.pyplot as plt
edgelist = pd.read_csv('https://gist.githubusercontent.com/brooksandrew/e570c38bcc72a8d102422f2af836513b/raw/89c76b2563dbc0e88384719a35cba0dfc04cd522/edgelist_sleeping_giant.csv')
# Grab node list data hosted on Gist
nodelist = pd.read_csv('https://gist.githubusercontent.com/brooksandrew/f989e10af17fb4c85b11409fea47895b/raw/a3a8da0fa5b094f1ca9d82e1642b384889ae16e8/nodelist_sleeping_giant.csv')
# Create empty graph
g = nx.Graph()
# Add edges and edge attributes
for i, elrow in edgelist.iterrows():
g.add_edge(elrow[0], elrow[1], attr_dict=elrow[2:].to_dict())
# Add node attributes[- see question][1]
for i, nlrow in nodelist.iterrows():
g.node[nlrow['id']].update(nlrow[1:].to_dict())
print(list(g.edges(data=True))[0:5])
# Preview first 10 nodes
print(g.nodes(data=True)[0:10])