我创建了一个这样的示例图:
class myObject(object):
def __init__(self, name):
self.name = name
def __str__(self):
return self.name
one = myObject("ONE")
Graph = nx.Graph()
Graph.add_node(one)
在这种情况下如何访问对象“one”的属性?我发现如果我将对象添加为节点的属性,我可以访问它,但访问
In [1]: Graph[one]
Out[1]: {}
或者例如
In [2]: print Graph[one]
{}
打印名称不起作用。
我也知道我可以迭代
返回的列表Graph.nodes()
但我想知道是否有更好的方法来做到这一点。
答案 0 :(得分:1)
您可以只检查您的对象'
In [1]: import networkx as nx
In [2]: %paste
class myObject(object):
def __init__(self, name):
self.name = name
def __str__(self):
return self.name
one = myObject("ONE")
Graph = nx.Graph()
Graph.add_node(one)
## -- End pasted text --
In [3]: print(one)
ONE
您可以使用节点属性在NetworkX中存储节点的任意数据。这可能更简单。您甚至可以将自定义对象添加为属性。
In [4]: G = nx.Graph()
In [5]: G.add_node("ONE", color='red')
In [6]: G.node["ONE"] # dictionary of attributes
Out[6]: {'color': 'red'}
In [7]: G.add_node("ONE",custom_object=one)
In [8]: G.node["ONE"] # dictionary of attributes
Out[8]: {'color': 'red', 'custom_object': <__main__.myObject at 0x988270c>}