我正在尝试基于包含节点和边的 defaultdict 在 NetworkX 中创建网络图。当我尝试添加边缘时,我收到以下错误消息:
add_edge() missing 1 required positional argument: 'v_of_edge'
我的代码如下:
graph = { "a" : ["c"],
"b" : ["c", "e"],
"c" : ["a", "b", "d", "e"],
"d" : ["c"],
"e" : ["c", "b"],
"f" : []
}
G = nx.Graph()
for k,v in graph.items():
G.add_node(k)
G.add_edge(*v)
nx.draw()
plt.show()
我知道 add_edge
采用 (u,v)
参数,我假设 u
是节点,v
是边缘,所以我尝试了:
G.add_edge(k,v)
但这导致了一条新的错误消息:
unhashable type: 'list'
我不知道如何继续,但它至少给我留下了一个问题。 在第二种方法中,我是否应该以某种方式分别访问给定节点的每条边?
最佳答案
您的代码中的问题是 v
是您的图形结构定义中的列表。以下代码将使它工作:
graph = { "a" : ["c"],
"b" : ["c", "e"],
"c" : ["a", "b", "d", "e"],
"d" : ["c"],
"e" : ["c", "b"],
"f" : []
}
G = nx.Graph()
for k,v in graph.items():
for vv in v:
G.add_edge(k,vv)
nx.draw(G)
plt.show()
根据您的定义,您应该遍历与每个节点关联的列表以定义边。
关于python - 向网络图添加边时出错 : 'v_of_edge' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49432832/