如何将图形节点链接到其键与节点相同的字典?

时间:2014-07-02 07:17:13

标签: python networkx

我正在使用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)

但是这会返回一个错误,指出某些节点不在图中。

1 个答案:

答案 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']