Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x KeyError:在networkx中使用make_small_graph功能时_Python 3.x_Networkx - Fatal编程技术网

Python 3.x KeyError:在networkx中使用make_small_graph功能时

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

我正在尝试在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:\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)