ssc*_*ssc 5 python graph vertices graph-tool
我想在一个图形工具图中存储一个类的实例,每个节点一个对象(或者作为图形工具调用它们的"顶点").我试图使用顶点属性,因为这似乎是这样做的方式.
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
Run Code Online (Sandbox Code Playgroud)
现在我想读回我的类对象,例如迭代所有节点/顶点并打印它们的标题:
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'
Run Code Online (Sandbox Code Playgroud)
另外,如何从图形中获取具有特定标题的类对象?一种方法似乎是创建一个顶点过滤器使用graph.set_edge_filter(...)并应用它 - 这似乎是一个相当昂贵的操作,考虑到我想要的只是获得一个单个对象.我真的不想将我自己的对象标题/顶点索引映射维护为IMO,这是图的任务之一.
我错过了一些基本的东西吗?
要访问属性值,请使用与设置其值相同的语法,即
for vertex in graph.vertices():
print vprop[vertex].title
Run Code Online (Sandbox Code Playgroud)
会做你想做的.
如果要获取具有给定属性值的顶点,则除了在图形中搜索它之外别无选择.请记住,属性值不需要是唯一的,因此无法以便宜的方式执行反向映射.此外,每个属性映射都需要反向映射,这在内存方面是昂贵的.但是,您可以使用dict对象轻松地自行完成此操作.
| 归档时间: |
|
| 查看次数: |
4084 次 |
| 最近记录: |