【问题标题】:NetworkX how to access attributes of objects as nodesNetworkX如何将对象的属性作为节点访问
【发布时间】:2020-12-02 07:11:27
【问题描述】:

我已经创建了一个这样的示例图表:

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”的属性?我发现如果我将对象添加为节点的属性,我可以访问它,但是使用访问 p>

In [1]: Graph[one]
Out[1]: {}

例如

In [2]: print Graph[one]
{}

打印名字是行不通的。

我也知道我可以遍历返回的列表

Graph.nodes()

但我想知道是否有更好的方法来做到这一点。

【问题讨论】:

    标签: python networkx


    【解决方案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>}
    

    【讨论】:

    • 好的,谢谢。所以除了描述的节点之外,没有办法通过访问节点来访问对象,对吗?
    • 我不确定你在问什么。在您的情况下,对象 节点。
    猜你喜欢
    • 2012-03-27
    • 2012-11-21
    • 1970-01-01
    • 2022-01-17
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 2011-04-28
    相关资源
    最近更新 更多