1

pydot を使用して有向木を作成し、視覚化します。それは問題ありませんが、ツリーのリーフ ノードも取得したいと思います。どうやってやるの?

一般に問題は、pydot オブジェクト内に格納されているノードとエッジにアクセスする方法です。pydot はこの機能を提供しますか、それとも単なる視覚化エンジンですか?

4

2 に答える 2

3

本質的には単なる視覚化エンジンです。ただし、問題を解決するために使用できる関数がいくつかあります。

>>> import pydot
>>> g = pydot.Dot(graph_type="digraph")
>>> g.add_node(pydot.Node(name="A"))
>>> g.add_node(pydot.Node(name="B"))
>>> g.add_node(pydot.Node(name="C"))
>>> g.add_node(pydot.Node(name="D"))
>>> g.add_edge(pydot.Edge("A","B"))
>>> g.add_edge(pydot.Edge("A","C"))
>>> g.add_edge(pydot.Edge("C","D"))
>>> g.get_nodes()
[<pydot.Node object at 0x1de1510>, <pydot.Node object at 0x1de1590>, <pydot.Node object at 0x7fb93407afd0>, <pydot.Node object at 0x1dd20d0>]
>>> leafs = {n.get_name():True for n in g.get_nodes()}
>>> for e in g.get_edge_list():
...     leafs[e.get_source()] = False
... 
>>> leafs
{'A': False, 'C': False, 'B': True, 'D': True}

それはあなたのために働くはずです。

于 2014-10-16T12:00:45.117 に答える