Проблема NetworkX с меткой и идентификатором при чтении и записи GML

#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: