如何在Python中从字典创建igraph对象

时间:2011-04-03 18:06:14

标签: python graph igraph

我正在使用字典来表示我的Python程序中的图形。我正在使用字典的键来表示顶点,并使用值来表示每个顶点的相邻节点。字典目前看起来像这样:

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

是否有一种直接的方法可以从这本字典中创建新的igraph object?如果没有简单的方法,那么下一个最佳选择是什么?

2 个答案:

答案 0 :(得分:4)

嗯,根据docs,似乎igraph期望vertices编码为integers。因此,您需要从mappingvertices指定一个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]])

答案 1 :(得分:0)

我做了类似这样的事情,它也将顶点名称导入图表:

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]])