我正在使用Networkx构建一个2d图形(用于“迷宫中的老鼠”问题)。我创建了图形,当我打印Networkx图形时,我得到(行,列)形式的坐标。我已经类似地创建了一个单独的字典,其中包含(行,列)形式的相同数量的项目,以便它们匹配图形的节点名称。现在我只需要将每个字典键链接到图表,以便我可以使用每个键的值(其中值是我可以使用的旅行的“方向”)。 “链接”可以表示字面链接两个对象,或者设置Networkx图中每个节点的属性。
我尝试过使用nx.relabel_nodes()
,但这会让我错误地说某些键显然不在图表中。
tl; dr如何将图表链接到具有相同键名的字典?
如果有更好的方法将图表中的每个节点链接到“方向”,那么请同时提一下(不需要提供具体的代码,因为我仍然想学习如何去做,我只是寻找方向)。
如果需要更多信息,我会回复。
编辑:
例如,我的networkx图是用
声明的row = 2
col = 2
mygraph = nx.grid_2d_graph(row, col)
打印时返回
{(0,0), (0,1), (1,0), (1,1)}
类似于字典。通过NetworkX文档,我可以看到使用relabel_node()
我可以使用类似结构的字典编辑每个节点:
mydict = {(0,0): l, (0,1): r, (1,0): u, (1,1): d} #may have mussed up the structure, but this is a dict
做
nx.relabel_nodes(mygraph, mydict, False)
但是这会返回一个错误,指出某些节点不在图中。
答案 0 :(得分:0)
以下是使用relabel_nodes的方法:
In [1]: import networkx as nx
In [2]: G = nx.grid_2d_graph(2, 2)
In [3]: G.nodes()
Out[3]: [(0, 1), (1, 0), (0, 0), (1, 1)]
In [4]: mapping = {(0,0): 'l', (0,1): 'r', (1,0): 'u', (1,1): 'd'}
In [5]: nx.relabel_nodes(G, mapping).nodes()
Out[5]: ['d', 'l', 'r', 'u']