测试 pydot 图中的节点成员资格

发布于 2024-11-13 23:49:08 字数 582 浏览 3 评论 0原文

pydot 有大量的绑定方法,用于获取和设置点图中的每一个小东西,阅读和写作,你能想到的,但我似乎找不到一个简单的成员资格测试。

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

>>> n in d.get_nodes()
False

这只是许多不起作用的事情之一。似乎节点一旦添加到图表中,就会获得一个新的身份

>>> 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)

pydot has a huge number of bound methods for getting and setting every little thing in a dot graph, reading and writing, you-name-it, but I can't seem to find a simple membership test.

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

>>> n in d.get_nodes()
False

is just one of many things that didn't work. It appears that nodes, once added to a graph, acquire a new identity

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

Can anyone suggest a way to create a node and test to see if it's in a graph before adding it so you could do something like this:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时光病人 2024-11-20 23:49:08

查看源代码,http://code.google.com /p/pydot/source/browse/trunk/pydot.py,节点名称似乎是唯一值,用作在图的节点字典中定位节点的键(尽管有趣的是,而不是返回对于现有节点来说是错误的,它只是将新节点的属性添加到现有节点的属性中)。

因此,除非您想将 __contains__() 的实现添加到 pydot.py 文件中执行以下操作的类之一,否则您只需在您的代码:

if n.get_name() not in d.obj_dict['nodes'].keys():
    d.add_node(n)

Looking through the source code, http://code.google.com/p/pydot/source/browse/trunk/pydot.py, it seems that node names are unique values, used as the keys to locate the nodes within a graph's node dictionary (though, interestingly, rather than return an error for an existing node, it simply adds the attributes of the new node to those of the existing one).

So unless you want to add an implementation of __contains__() to one of the classes in the pydot.py file that does the following, you can just do the following in your code:

if n.get_name() not in d.obj_dict['nodes'].keys():
    d.add_node(n)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文