Използвам 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"]