#python-3.x #networkx
Вопрос:
У меня есть следующий пример, где я программно создаю график, записываю его в файл GML и снова считываю файл в график.
Я хочу иметь возможность использовать график, загруженный из файла, вместо созданного программно:
import networkx as nx
g = nx.Graph()
g.add_edge(1,4)
nx.write_gml(g, "test.gml")
gg = nx.read_gml("test.gml", label="label")
print(gg.edges(data=True))
Содержимое test.gml выглядит следующим образом:
graph [
node [
id 0
label "1"
]
node [
id 1
label "4"
]
edge [
source 0
target 1
]
]
Узлы 1 и 4 из кода python теперь представлены двумя узлами с идентификаторами 0 и 1 и метками «1» и «4».
После прочтения файла мне теперь нужно получить доступ к узлу 4 следующим образом:
gg['4']
Вместо
g[4]
для исходного графика.
Я мог бы, конечно, убедиться, что каждый узел приведен к строке, прежде чем искать узел, но это непрактично для огромных графиков.
Альтернативой было бы программно создать (еще один) график, идентичный g
целочисленным ключам, но с целочисленными ключами, но это еще более громоздко.
Что мне делать?
Комментарии:
1. Как насчет переназначения узлов с
relabel_nodes
помощью ?
Ответ №1:
Попробуй:
nx.read_gml(fpath, destringizer=int)