Как найти идентификатор вершины, если у нас есть объект вершины в python Igraph v1.7?

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

Я хочу добавить ребро между a и b, как мне это сделать?

2 ответов


вы можете найти идентификатор вершины, обратившись к определенной вершине vertexSeq, поскольку " a " является объектом последовательности вершин.

что-то вроде этого, должно сделать трюк.

a[0].index

Хорошо, похоже, у нас есть два вопроса. Один из них находится в заголовке вопроса:"Как найти идентификатор вершины, если у нас есть объект вершины"? Это правильно ответил Сиддхартха: вы можете просто использовать index свойства вершины. Другой вопрос находится в теле вопроса: "я хочу добавить ребро между a и b, как мне это сделать?". Ответ просто использовать add_edge метод, который принимает объекты вершин, а также вершину IDs:

g.add_edge(a, b)

здесь я предположил, что a и b объекты типа Vertex. Однако, судя по фрагменту кода, Вы хотите добавить ребро между двумя вершинами, для которых вы знаете имена. Это также можно сделать с помощью find метод VertexSeq объекты, которые работают как выбор, который вы делаете, но возвращает только первый совпадающие вершины. Итак, вы можете просто сделать:

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

еще лучше, если вы используете name атрибут вершины для хранения имен вершин (а не Name - обратите внимание на заглавную букву), вы даже можете использовать само имя без вызова g.vs.find так как igraph лечит name атрибут вершины специально:

g.add_edge("A", "B")