NetworkX从特定节点

时间:2017-11-24 14:01:28

标签: python networkx

我在python中遇到了networkX库的问题。我构建了一个图表 初始化一些节点,带有属性的边。我还开发了一种方法,可以将具有特定值的特定属性动态添加到目标节点。例如:

 def add_tag(self,G,fnode,attr,value):
    for node in G:
        if node == fnode:
           attrs = {fnode: {attr: value}}
           nx.set_node_attributes(G,attrs)

因此,如果我们打印目标节点的属性将被更新

        print(Graph.node['h1'])
  
    

{'color':u'green'}

  
        self.add_tag(Graph,'h1','price',40)
        print(Graph.node['h1'])
  
    

{'color':u'green','price':40}

  

我的问题是如何从目标节点中删除现有属性?我找不到任何删除/删除属性的方法。我发现只是.update方法并没有帮助。

谢谢

2 个答案:

答案 0 :(得分:2)

属性是python词典,因此您可以使用del删除它们。

例如,

In [1]: import networkx as nx

In [2]: G = nx.Graph()

In [3]: G.add_node(1,color='red')

In [4]: G.node[1]['shape']='pear'

In [5]: list(G.nodes(data=True))
Out[5]: [(1, {'color': 'red', 'shape': 'pear'})]

In [6]: del G.node[1]['color']

In [7]: list(G.nodes(data=True))
Out[7]: [(1, {'shape': 'pear'})]

答案 1 :(得分:1)

我想你提出的del方法会起作用。 你给了我一个很好的想法来构建一个像这样的remove_attribute方法(使用pop):

 def remove_attribute(self,G,tnode,attr):
    G.node[tnode].pop(attr,None)

其中tnode是目标节点,attr是我们要删除的属性。