read_gml автоматически переименовывает проанализированные узлы:
label (string, optional)
- Если не None
, проанализированные узлы будут переименованы в соответствии с атрибутами узла, обозначенными label
. Значение по умолчанию: ‘label’
.
Вы можете установить label
на 'id'
, поэтому read_gml
будет устанавливать идентификаторы узлов в соответствии с полем id
в файле .gml:
import networkx as nx
kn2 = nx.read_gml('karate.gml', label='id')
print(kn2.edges)
[(1, 32), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (1, 8), (1, 9), ...]
Редактировать 1: Похоже, книга немного устарела. Для стабильной версии read_gml
нужна строка multigraph 1
в файле .gml, если в ней есть дубликаты ребер. Вы должны добавить это:
Creator "Jean Mark Gawron on Sunday, 15. December 2013 02:40PM"
graph
[
multigraph 1 <------------------ HERE
node
[
id 1
]
node
[
id 2
]
...
Затем вы можете получить доступ к значениям ребер следующим образом:
kn2.edges.data('value')
или отсортируйте их, как в книге:
all_edges = sorted(
kn2.edges(),
key=lambda x: kn2.get_edge_data(*x)[0]['value'],
reverse=True
)