2017-11-24 26 views
1

pythonでnetworkXライブラリに問題があります。私は がいくつかのノード、属性を持つエッジを初期化するグラフを作成します。また、特定の値を持つ特定の属性をターゲットノードに動的に追加するメソッドを開発しました。例えば: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']) 

{u'green ' '色'}が更新されます

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

{ '色':u'green」、 '価格':40}

私の質問は、私は、ターゲット・ノードから既存の属性を除去するために同じことを行うことができますどのようにのですか? ?私は属性を削除/削除する方法を見つけることができません。私はちょうど.updateメソッドを見つけただけで役に立ちません。

は、あなたがそれらを削除する delを使用することができますので、あなたが

答えて

0

属性はPythonの辞書ですありがとうございました。例えば

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'})] 
0

は、私はあなたが提案したデルメソッドが動作することとします。 あなたは私に(ポップで)そのようなremove_attribute方法を構築するための良いアイデアを与えた:

TNODEがターゲットノードで、attrは、私たちには、削除する属性です
def remove_attribute(self,G,tnode,attr): 
    G.node[tnode].pop(attr,None) 

関連する問題