繁体   English   中英

graph-tool:如何访问属性?

[英]graph-tool: how to access properties?

我想将一个类的实例存储在一个图工具图中,每个节点一个对象(或图工具称其为“顶点”)。 我正在尝试使用顶点属性,因为这似乎是实现此目的的方法

class MyClass(object):
    def __init__(self, title):
        self.title = title

graph  = Graph()
my_obj = MyClass('some title')

vertex = graph.add_vertex()
vprop  = graph.new_vertex_property('object')
vprop[vertex] = my_obj

现在,我想读回我的类对象,例如,遍历所有节点/顶点并打印其标题:

for vertex in self.graph.vertices():
    # TODO: how to access titles ? this just prints
    # "<Vertex object with index '0' at 0xb1e4bac>"
    print repr(vertex) + '\n'

另外,如何从图形中获取具有特定标题的类对象? 一种方法似乎是使用graph.set_edge_filter(...)创建一个顶点过滤器并将其应用-考虑到我想要的是找回一个单个对象,这似乎是一个相当昂贵的操作。 我真的不想像IMO那样维护自己的对象标题/顶点索引映射,这是图形的任务之一。

我在这里缺少基本的东西吗?

为了访问属性值,请使用与设置属性值相同的语法,即

    for vertex in graph.vertices():
        print vprop[vertex].title

会做你想要的。

如果要获得具有给定属性值的顶点,则别无选择,只能在图形中进行搜索。 请记住,属性值不必是唯一的,因此无法以廉价的方式执行反向映射。 此外,每个属性映射都需要一个反向映射,这在内存方面是昂贵的。 但是,您可以轻松地使用dict对象自行完成此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM