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

标签 python networkx

我正在尝试基于包含节点和边的 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()

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

enter image description here

关于python - 向网络图添加边时出错 : 'v_of_edge' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49432832/

相关文章:

python - SMOTE - 无法将字符串转换为 float

python - 如何在 TensorFlow session 中使用数据集进行训练

python - For 循环和多个条件

python-2.7 - 如何使用networkx从文本文件创建图形?

python - 过滤权重低于阈值的边时出现运行时错误 - Networkx

python - 为网络图重构 pandas 数据框

python - 在 Python 的 SELECT 语句中传递列名

Python if vs try-except

python - NetworkX 节点标签相对位置

缺少 Python networkx DFS 或 BFS?