networkx 中的代码 g.nodes(data=True)[0:10] 不工作
Code g.nodes(data=True)[0:10] in networkx not working
代码:
print(g.nodes(data=True)[0:10])
摘自 Graph tutorial 无效。
我必须按照前面两个问题中的描述对代码进行两处更改:
鉴于已经报告的两个错误,它们似乎指向较新版本的 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])
您应该将 g.nodes()
的结果转换成一个列表,因为 g.nodes()
returns 是一个 NodeView
类型,不能被切片。
print(list(g.nodes(data=True))[0:10])
这应该适用于 python 3.7 和 networkx 2.4
代码:
print(g.nodes(data=True)[0:10])
摘自 Graph tutorial 无效。
我必须按照前面两个问题中的描述对代码进行两处更改:
鉴于已经报告的两个错误,它们似乎指向较新版本的 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])
您应该将 g.nodes()
的结果转换成一个列表,因为 g.nodes()
returns 是一个 NodeView
类型,不能被切片。
print(list(g.nodes(data=True))[0:10])
这应该适用于 python 3.7 和 networkx 2.4