Python 获得;ValueError:无效的顶点描述符“;删除顶点时

Python 获得;ValueError:无效的顶点描述符“;删除顶点时,python,graph-tool,Python,Graph Tool,我不知道是什么导致了这个错误。我所做的是在开始时向图形添加许多顶点: for i in range(len(repositories_key_list)): repo_vertices[repositories_key_list[i]] = g3.add_vertex() 然后进行一些连接这些顶点的处理,为了减少渲染图形所需的时间,我删除了所有进出度等于零的垂直: for repository_name in repo_vertices: vert = repo_vertic

我不知道是什么导致了这个错误。我所做的是在开始时向图形添加许多顶点:

for i in range(len(repositories_key_list)):
    repo_vertices[repositories_key_list[i]] = g3.add_vertex()
然后进行一些连接这些顶点的处理,为了减少渲染图形所需的时间,我删除了所有进出度等于零的垂直:

for repository_name in repo_vertices:

    vert = repo_vertices[repository_name]
    print vert

    if vert.out_degree() == 0 and vert.in_degree() == 0:
        g3.remove_vertex(vert)
但是,我所做的事情似乎是个问题,因为我遇到了以下错误:

Traceback (most recent call last):
  File "/media/sfalk/win-data/Stefan/Uni/Master/WS/Network Science/projects/project1/github/graph_tools_github.py", line 276, in <module>
    print vert
ValueError: invalid vertex descriptor: 22947

因此,无论这里发生了什么,我都不知道如何解决它。

这在
图形的文档中有详细描述。即它指出:

此操作可能使顶点描述符无效。顶点始终是 在[0,N]范围内连续索引−1] ,因此是顶点描述符 索引高于
的顶点将在删除后失效(如果
fast==False,否则只有指向具有
最大索引将无效)

因此,唯一安全的方法是同时删除多个顶点 一次是按索引降序排序:

或者(并且优选地),可以传递列表(或iterable) 直接作为
顶点
参数,执行上述操作 内部(在C++中)


这在
Graph.remove\u vertex()
at的文档中有详细描述。即它指出:

此操作可能使顶点描述符无效。顶点始终是 在[0,N]范围内连续索引−1] ,因此是顶点描述符 索引高于
的顶点将在删除后失效(如果
fast==False,否则只有指向具有
最大索引将无效)

因此,唯一安全的方法是同时删除多个顶点 一次是按索引降序排序:

或者(并且优选地),可以传递列表(或iterable) 直接作为
顶点
参数,执行上述操作 内部(在C++中)


我还不清楚:有没有一种方法可以移除任意顶点而不使至少一个其他顶点失效?我还不清楚:有没有一种方法可以移除任意顶点而不使至少一个其他顶点失效?
Traceback (most recent call last):
  File "/media/sfalk/win-data/Stefan/Uni/Master/WS/Network Science/projects/project1/github/graph_tools_github.py", line 278, in <module>
    if vert.out_degree() == 0 and vert.in_degree() == 0:
  File "/usr/lib/python2.7/dist-packages/graph_tool/__init__.py", line 2933, in _out_degree
    return self.__out_degree()
ValueError: invalid vertex descriptor: 23038
# 'del_list' is a list of vertex descriptors
for v in reversed(sorted(del_list)):
    g.remove_vertex(v)