Python 3.x KeyError:在networkx中使用make_small_graph功能时
我正在尝试在networkx上玩图形。我正在用python编写代码,并且有必要的扩展。代码块是:Python 3.x KeyError:在networkx中使用make_small_graph功能时,python-3.x,networkx,Python 3.x,Networkx,我正在尝试在networkx上玩图形。我正在用python编写代码,并且有必要的扩展。代码块是: gr = {"0": ["4"], "1": ["3"], "2": ["2", "3", "4", "5"], "3": ["1", "3"], "4": ["3"], "5": ["4"] } msg = nx.make_small_graph(gr) 但我收到了这个错误: 回溯(最近一次呼叫最后一次): 文件“C:\eclipseworks
gr = {"0": ["4"],
"1": ["3"],
"2": ["2", "3", "4", "5"],
"3": ["1", "3"],
"4": ["3"],
"5": ["4"]
}
msg = nx.make_small_graph(gr)
但我收到了这个错误:
回溯(最近一次呼叫最后一次):
文件“C:\eclipseworkspace\graohToJSON\GraphToJSON.py”,第16行,在
msg = nx.make_small_graph(gr) #Make Small Graph
文件“C:\AppData\Local\Programs\Python\Python37-32\lib\site packages\networkx\generators\small.py”,第90行,在make\u small\u图中
ltype = graph_description[0]
KeyError:0您可以直接创建(定向?)图形:
将networkx导入为nx
gr={“0”:[“4”],
"1": ["3"],
"2": ["2", "3", "4", "5"],
"3": ["1", "3"],
"4": ["3"],
"5": ["4"]
}
msg=nx.有向图(gr)
打印(消息边缘)
# [('3', '3'), ('3', '1'), ('2', '4'), ('2', '3'), ('2', '2'), ('2', '5'), ('4', '3'), ('1', '3'), ('5', '4'), ('0', '4')]
您可以直接创建(定向?)图形:
将networkx导入为nx
gr={“0”:[“4”],
"1": ["3"],
"2": ["2", "3", "4", "5"],
"3": ["1", "3"],
"4": ["3"],
"5": ["4"]
}
msg=nx.有向图(gr)
打印(消息边缘)
# [('3', '3'), ('3', '1'), ('2', '4'), ('2', '3'), ('2', '2'), ('2', '5'), ('4', '3'), ('1', '3'), ('5', '4'), ('0', '4')]
我认为Sparky05为您提供了最好的答案,即另一个命令将处理您尝试使用的格式(尽管我建议使用int而不是字符串)
这个答案解释了你使用的结构有什么问题
从for制作小图形中
:
制作小图形(图形描述,使用=无创建)
graph\u description
是一个表单列表[ltype,name,n,xlist]
这里,ltype
是“邻接列表”
或“边缘列表”
之一,name
是图形的名称,n
是节点数。这将构造一个包含n个节点的图,其中包含整数标签0,…,n-1
如果ltype
=“邻接列表”
,则xlist
是一个邻接列表,正好包含n
条目,第j个条目(可以为空)指定连接到顶点j的节点
。。。使用create\u using
参数选择图形类/类型
所以您输入了gr
,这是一个dict,其键是字符串。但它期望的是非常不同的东西:一个列表,gr[0]
应该是的“邻接列表”
或的“edgelist”
,其其他元素提供了关于图形的其他信息
因此,您需要将输入设置为列表,列表的第一个元素告诉它有关图形结构的信息的格式。然后,列表中的第二个元素需要是图形的名称。下一个元素需要是图形中的节点数。最后一个条目需要是一个边列表或一个列表列表,该列表给出了与每个节点相邻的节点
因此,正如我理解您的意图,您需要一个有向图(否则4的边也会变为0,而不仅仅是0的边变为4):
文档中显示了几个具体示例,请看一看。我认为Sparky05为您提供了最好的答案,即另一个命令将处理您尝试使用的格式(尽管我建议使用int而不是字符串) 这个答案解释了你使用的结构有什么问题 从for
制作小图形中
:
制作小图形(图形描述,使用=无创建)
graph\u description
是一个表单列表[ltype,name,n,xlist]
这里,ltype
是“邻接列表”
或“边缘列表”
之一,name
是图形的名称,n
是节点数。这将构造一个包含n个节点的图,其中包含整数标签0,…,n-1
如果ltype
=“邻接列表”
,则xlist
是一个邻接列表,正好包含n
条目,第j个条目(可以为空)指定连接到顶点j的节点
。。。使用create\u using
参数选择图形类/类型
所以您输入了gr
,这是一个dict,其键是字符串。但它期望的是非常不同的东西:一个列表,gr[0]
应该是的“邻接列表”
或的“edgelist”
,其其他元素提供了关于图形的其他信息
因此,您需要将输入设置为列表,列表的第一个元素告诉它有关图形结构的信息的格式。然后,列表中的第二个元素需要是图形的名称。下一个元素需要是图形中的节点数。最后一个条目需要是一个边列表或一个列表列表,该列表给出了与每个节点相邻的节点
因此,正如我理解您的意图,您需要一个有向图(否则4的边也会变为0,而不仅仅是0的边变为4):
文档中显示了几个具体的示例,请看一看
gr = ['adjacencylist', 'my_graph', 6, [[4], [3], [2,3,4,5], [1,3], [3], [4]]]
G = nx.make_small_graph(gr, create_using = nx.DiGraph)