/ / Как мога да свържа графични възли с речник, чиито ключове са същите като възлите? - питън,

Как мога да свържа графични възли с речник, чиито ключове са същите като възлите? - питън,

Използвам Networkx за изграждане на 2d графика (за "плъхв лабиринт "проблем) .Аз създадох графиката, а когато печатам графиката на Networkx получавам координатите във формат (ред, колона), подобно създадох отделен речник със същия брой елементи в (ред, колона ), така че да съответстват на имената на възлите на графиката. Сега просто трябва да свържа всеки ключ на речника с графиката, за да мога да използвам стойността на всеки ключ (където стойността е "посоката" на пътуването, която мога да използвам). "Връзка" може да означава буквално свързване на двата обекта или задаване на атрибути на всеки възел в графиката на Networkx.

Опитах да използвам nx.relabel_nodes() и това ми дава грешки, казвайки, че някои клавиши не са в графиката, когато очевидно са.

tl; dr как мога да свържа графиката с речник със същите имена на клавиши?

Ако има по - добър начин за свързване на всеки възел вв тази посока, моля, посочете и това (няма нужда да давате конкретен код, тъй като все още искам да науча как да го направя, аз просто търся посока).

Ако е необходима повече информация, аз ще отговоря с нея.

редактиране:

например, моята мрежова графика е обявена с

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 за отговор № 1

Ето как използвате 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"]