/ / Jak mogę połączyć węzły graficzne ze słownikiem, którego klucze są takie same jak węzły? - python, siecix

Jak mogę połączyć węzły graficzne ze słownikiem, którego klucze są takie same jak węzły? - python, siecix

Używam Networkx do zbudowania wykresu 2d (dla "szczuraw labiryncie "problem." Stworzyłem wykres, a kiedy wydrukuję wykres Networkx, otrzymuję współrzędne w postaci (wiersz, kolumna), podobnie utworzyłem oddzielny słownik z taką samą liczbą elementów (wiersz, kolumna ), tak aby pasowały do ​​nazw węzłów wykresu. Teraz po prostu muszę połączyć każdy klucz słownikowy z wykresem, aby móc użyć wartości każdego klucza (gdzie wartość jest "kierunkiem" podróży, z którego mogę korzystać). "Link" może oznaczać dosłowne połączenie dwóch obiektów lub ustawienie atrybutów każdego węzła na wykresie Networkx.

Próbowałem użyć nx.relabel_nodes() i to daje mi błędy, mówiąc, że niektóre klawisze nie są na wykresie, gdy oczywiście są.

tl; dr jak połączyć wykres ze słownikiem o takich samych nazwach?

Jeśli istnieje lepszy sposób na połączenie każdego węzła wwykres do jego "kierunku", a następnie proszę wspomnieć, że również (nie trzeba podawać konkretnego kodu, ponieważ nadal chcę się nauczyć JAK to zrobić, ja po prostu szukam kierunku).

Jeśli potrzebujemy więcej informacji, odpowiem.

edytować:

na przykład mój wykres networkx jest zadeklarowany za pomocą

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

Po wydrukowaniu to zwraca

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

który jest podobny do słownika. Przeglądając dokumentację NetworkX widzę, że za pomocą relabel_node() Mogę edytować każdy węzeł przy użyciu słownika o podobnej strukturze:

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

wykonując

nx.relabel_nodes(mygraph, mydict, False)

ale to zwraca błąd, że niektóre węzły nie znajdują się na wykresie.

Odpowiedzi:

0 dla odpowiedzi № 1

Oto jak korzystać z 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"]