当我尝试从python列表中删除元素(pydot对象)时引发错误

时间:2011-07-15 15:52:22

标签: python list pydot

我正在编写一个算法来表示回归树,使用pydot模块(Graphviz的Dot语言的接口)。 在算法中,制作边缘和节点列表,然后表示它们 - 工作正常。

但是在某些特定情况下,我需要删除一些边缘和节点,这就是我被卡住的地方。以下是代码的一部分:

import pydot
graph = pydot.Dot(graph_type='graph')

link4 = pydot.Edge(node10, node21, label=etiquetas[3])
link5 = pydot.Edge(node11, node22, label=etiquetas[4])
lista_links = [link4, link5]

# if some conditions are verified, then:
lista_links.remove(link5)

for link in lista_links:
graph.add_edge(link)
graph.write_png('teste.png')

我希望这段代码可以毫无问题地工作,但我收到错误,说:

AttributeError: 'NoneType' object has no attribute 'get_top_graph_type'

我唯一的想法是,在定义所有特定情况后,更改代码并仅添加节点和边缘,而不是在某些特定情况下删除节点和边缘。但那将是更多的工作......(代码比我向你展示的要大得多,我有几个需要考虑的特定情况)。

我很好奇为什么python表现得像这样...... 有人可以向我解释一下,或者让我知道如何改变这种行为?

提前致谢, 卡拉

1 个答案:

答案 0 :(得分:1)

在表面上,似乎问题出现在没有父图的边缘或节点中。因此,整体解决方案将是:不允许节点和边缘挂起,始终将它们附加到图形,然后根据需要从图形中删除。