Как найти идентификатор вершины, если у нас есть объект вершины в 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")