【发布时间】:2018-03-22 15:41:30
【问题描述】:
我正在尝试基于包含节点和边的默认字典在 NetworkX 中创建网络图。当我尝试添加边缘时,我收到以下错误消息:
add_edge() 缺少 1 个必需的位置参数:'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)
但这导致了一条新的错误消息:
不可散列的类型:“列表”
我不知道该怎么做,但这至少给我留下了一个问题。 在第二种方法中,我应该以某种方式分别访问给定节点的每条边吗?
【问题讨论】:
-
你看过 add_edge (networkx.github.io/documentation/networkx-1.10/reference/…) 的文档吗?有帮助吗?
-
@MichaWiedenmann 这让我觉得我必须循环遍历每个节点的关联列表中的每个元素,正如 Yilun 在下面建议的那样。感谢您抽出宝贵时间回复。
-
当您收到这样的错误提示您向函数发送了错误的数据类型时,您应该做的第一件事是在函数调用之前打印该参数。通常这足以找出问题所在。