2

pydot には、ドット グラフ内のすべての小さなものを取得および設定するためのバインドされたメソッドが多数あります。読み取りと書き込みを行いますが、単純なメンバーシップ テストを見つけることができないようです。

>>> d = pydot.Dot()
>>> n = pydot.Node('foobar')
>>> d.add_node(n)

>>> n in d.get_nodes()
False

うまくいかなかった多くのことの1つにすぎません。ノードがグラフに追加されると、新しい ID を取得するようです

>>> d.get_nodes()[0]
<pydot.Node object at 0x171d6b0>
>>> n
<pydot.Node object at 0x1534650>

ノードを作成し、ノードを追加する前にそれがグラフにあるかどうかをテストして、次のようなことを行う方法を提案できますか?

d = pydot.Dot()
n = pydot.Node('foobar')
if n not in d:
    d.add_node(n)
4

1 に答える 1

2

ソースコードhttp://code.google.com/p/pydot/source/browse/trunk/pydot.pyを見ると、ノード名は一意の値であり、グラフ内のノードを見つけるためのキーとして使用されているようですノード ディクショナリ (ただし、興味深いことに、既存のノードに対してエラーを返すのではなく、新しいノードの属性を既存のノードの属性に追加するだけです)。

__contains__()したがって、次のことを行うファイル内のクラスの 1 つに の実装を追加したくない場合pydot.pyは、コードで次のことを行うだけで済みます。

if n.get_name() not in d.obj_dict['nodes'].keys():
    d.add_node(n)
于 2011-06-07T17:26:40.460 に答える