我正在使用IGRAPH for python。 我想知道有没有办法插入顶点不存在
E.g:
import igraph
if __name__ == "__main__":
g = igraph.Graph()
g.add_vertex(1)
g.add_vertex(1)
for vertex in g.vs():
print vertex
结果:
igraph.Vertex(<igraph.Graph object at 0x7f783e9b5a00>,0,{'name': 1})
igraph.Vertex(<igraph.Graph object at 0x7f783e9b5a00>,1,{'name': 1})
我检查了文档,但找不到任何方法来解决问题。
我认为index = g.vs.select("name_eq")
或index = g.vs(name_eq="?")
或vector with added records
可以解决,但我想要一个更清晰的解决方案。
例如:但它不好
added_vertices = set()
def add_vertex(g, name, _type="verb"):
if name not in added_vertices:
added_vertices.add(name)
g.add_vertex(name, type=_type)
我需要这种格式的读取文件:
word_1 verb_1 word_2
word_2 verb_2 word_3
word_3 verb_1 word_4
....
阅读:
f = open('input.in', 'r')
g = igraph.Graph()
for line in f:
left, verb, right = line.strip().split("\t")
g.add_vertex(verb, type="verb")
...
有什么建议吗?
答案 0 :(得分:3)
g.vs.find(name=...)
找到具有给定名称的第一个顶点并返回它,或者如果找不到这样的顶点则抛出ValueError
。您可以使用它来构造一个函数,用于添加或查找具有给定名称的顶点:
def add_or_find_vertex(g, name):
try:
return g.vs.find(name=name)
except ValueError:
g.add_vertex(name)
return g.vs.find(name=name)