【问题标题】:graph-tool: how to access properties?图形工具:如何访问属性?
【发布时间】:2012-03-20 13:47:06
【问题描述】:

我想将一个类的实例存储在graph-tool 图形中,每个节点一个对象(或图形工具调用它们的“顶点”)。我正在尝试使用顶点属性,因为它似乎是 way to do this

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 一样维护自己的对象标题/顶点索引映射,这是图表的任务之一。

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

【问题讨论】:

    标签: python graph vertices graph-tool


    【解决方案1】:

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

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

    会做你想做的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多