igraph python 检查顶点是否存在

问题描述

我需要简单的解决方案来检查大 ebough 图中是否存在顶点

我尝试了 find 方法,但是如果顶点不在图形中,我得到 ValueError

例如该代码将失败

def treeExample():
    g = Graph()
    g.add_vertex('a')
    g.add_vertex('b')
    g.vs.find(name = 'c')

if __name__ == '__main__':
    treeExample()

事实上我需要一些布尔函数来判断顶点是否存在(没有运行时错误或异常抛出)

当然我可以创建自己的设置来检查这个,但这非常不方便

那么问题可以通过 igraph 库以某种方式解决吗?

解决方法

尝试使用 select 方法:

g = Graph()
g.add_vertex('a')
g.add_vertex('b')
len(g.vs.select(name='c'))  # return 0
len(g.vs.select(name='a'))  # return 1
,

您可以将 find 包裹在 try- 和 except 块中。如果节点存在,这将比大型图的 select 快,因为一旦找到节点,它就会停止执行。

def has_node(graph,name):
    try:
        graph.vs.find(name=name)
    except:
        return False
    return True