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

1 投票
2 回答
3408 浏览
提问于 2025-04-16 15:00

我在我的Python程序中用字典来表示一个图。字典的键代表图中的点(也叫顶点),而值则表示每个点相邻的节点。现在这个字典的样子是这样的:

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

有没有简单的方法可以从这个字典创建一个新的igraph对象?如果没有简单的方法,接下来最好的选择是什么?

2 个回答

1

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

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

根据文档,看起来igraph要求vertices整数来表示。所以你需要创建一个映射,把你的vertices整数对应起来,然后你就可以像这样继续操作:

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

撰写回答