如果我们在python Igraph v1.7中有顶点对象,如何找到顶点id?

时间:2013-06-10 07:49:15

标签: igraph

a=g.vs(Name_eq="A")
b=g.vs(Name_eq="B")

我想在a和b之间添加一条边,我该怎么办?

2 个答案:

答案 0 :(得分:11)

好的,好像我们在这里有两个问题。一个是问题标题:“如果我们有Vertex对象,如何找到顶点ID”?这是正确的answered by Siddharth:您可以简单地使用顶点的index属性。另一个问题是在问题正文中:“我想在a和b之间添加一个边缘,我该怎么做?”。答案只是使用接受Vertex对象的add_edge方法以及顶点ID:

g.add_edge(a, b)

我假设abVertex类型的对象。但是,从您的代码片段判断,您基本上要做的是在两个顶点之间添加一个您知道名称的边。这也可以使用find对象的VertexSeq方法来完成,它与您所做的选择类似,但只返回第一个匹配的顶点。所以,您可以这样做:

g.add_edge(g.vs.find(Name="A"), g.vs.find(Name="B"))

更好的是,如果使用name顶点属性来存储顶点名称(而不是Name - 请注意大写字母),您甚至可以在不调用{{1}的情况下使用名称本身因为igraph特别处理g.vs.find顶点属性:

name

答案 1 :(得分:8)

您可以通过访问vertexSeq的特定顶点来找到顶点id,因为'a'是顶点序列对象。

这样的事情应该可以解决问题。

a[0].index