Как создать объект igraph из словаря в Python - PullRequest
1 голос
/ 03 апреля 2011

Я использую словарь для представления графика в моей программе на Python.Я использую ключи словаря для представления вершин и значения для представления смежных узлов каждой вершины.В настоящее время словарь выглядит следующим образом:

{  
   'v1' : ['v2','v3'],
   'v2' : ['v1'],
   'v3' : ['v1','v4'],
   'v4' : ['v3']
    // And so on. 
}

Существует ли простой способ создания нового объекта igraph из этого словаря?Если нет простого пути, каков следующий лучший вариант?

Ответы [ 2 ]

4 голосов
/ 03 апреля 2011

Ну, согласно документам , кажется, что igraph ожидает vertices, закодированный как integers.Таким образом, вам нужно указать mapping от вашего vertices до integers, а затем вы можете продолжить, например, так:

G= {'v1': ['v2', 'v3'], 'v2': ['v1'], 'v3': ['v1', 'v4'], 'v4': ['v3']}
mvi= {'v1': 1, 'v2': 2, 'v3': 3, 'v4': 4}
graph= igraph.Graph(edges= [(mvi[v], mvi[a]) for v in G.keys() for a in G[v]])
0 голосов
/ 13 июля 2017

Я сделал что-то подобное, что импортирует имена вершин в график:

relations = {'v1': ['v2','v3'], 'v2': ['v1'], 'v3': ['v1','v4']}
g = igraph.Graph()
g.add_vertices(list(set(list(relations.keys()) + list([a for v in relations.values() for a in v]))))
g.add_edges([(v, a) for v in relations.keys() for a in relations[v]])
...