/ / Como posso ligar nós de gráfico a um dicionário cujas chaves são as mesmas que os nós? - python, networkx

Como posso ligar nós de gráfico a um dicionário cujas chaves são as mesmas que os nós? - python, networkx

Eu estou usando o Networkx para construir um gráfico 2D (para "rato"no labirinto "problema" .Eu criei o gráfico, e quando eu imprimir o gráfico Networkx recebo as coordenadas em (linha, coluna) formulário.Também criei um dicionário separado com o mesmo número de itens em (linha, coluna ), para que correspondam aos nomes dos nós do gráfico. Agora eu simplesmente preciso vincular cada chave do dicionário ao gráfico para que eu possa usar o valor de cada chave (onde o valor é a "direção" da viagem que eu posso usar). "Link" pode significar literalmente vincular os dois objetos ou definir atributos de cada nó no gráfico Networkx.

Eu tentei usar nx.relabel_nodes() e isso me dá erros dizendo que certas chaves não estão no gráfico quando obviamente estão.

tl; dr como faço para vincular o gráfico a um dicionário com os mesmos nomes de chave?

Se houver uma maneira melhor de vincular cada nó noGráfico para a sua "direção", em seguida, por favor mencione isso também (não há necessidade de dar código específico, uma vez que eu ainda quero aprender como fazê-lo, estou apenas procurando direção).

Se mais informações forem necessárias, eu responderei com isso.

editar:

por exemplo, meu gráfico networkx é declarado com

row = 2
col = 2
mygraph = nx.grid_2d_graph(row, col)

Quando impresso, este retorna

{(0,0), (0,1), (1,0), (1,1)}

que é semelhante a um dicionário. Analisando a documentação do NetworkX, vejo que usando relabel_node() Eu posso editar cada nó usando um dicionário de estrutura semelhante:

mydict = {(0,0): l, (0,1): r, (1,0): u, (1,1): d} #may have mussed up the structure, but this is a dict

fazendo

nx.relabel_nodes(mygraph, mydict, False)

mas isso retorna um erro dizendo que certos nós não estão no gráfico.

Respostas:

0 para resposta № 1

Aqui está como você usa 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"]