向网络图添加边时出错:'v_of_edge'

Kri*_*sen 2 python networkx

我正在尝试基于包含节点和边的默认字典在 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()
Run Code Online (Sandbox Code Playgroud)

我知道这add_edge需要(u,v)争论,我认为这u是节点,v是边缘,所以我尝试了:

G.add_edge(k,v)
Run Code Online (Sandbox Code Playgroud)

但这导致了一条新的错误消息:

不可散列的类型:'list'

我不知道如何继续,但这至少给我留下了一个问题。在第二种方法中,我应该以某种方式分别访问给定节点的每个边吗?

Yil*_*ang 5

您的代码中的问题是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()
Run Code Online (Sandbox Code Playgroud)

根据您的定义,您应该遍历与每个节点关联的列表来定义边。

在此处输入图片说明