2017-11-24 1 views
1

Ich habe ein Problem mit der Netzwerk-X-Bibliothek in Python. Ich baue ein Diagramm, dass einige Knoten, Kanten mit Attributen initialisiert. Ich habe auch eine Methode entwickelt, die einem Zielknoten ein bestimmtes Attribut mit einem bestimmten Wert dynamisch hinzufügt. Zum Beispiel:NetworkX entfernen Attribute von einem bestimmten Knoten

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) 

Daher, wenn wir drucken die Attribute des Zielknotens aktualisiert werden

 print(Graph.node['h1']) 

{ 'Farbe': u'green '}

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

{ 'Farbe': u'green‘, 'Preis': 40}

Meine Frage ist Wie kann ich das gleiche tun, ein vorhandenes Attribut von einem Zielknoten zu entfernen? ? Ich kann keine Methode zum Entfernen/Löschen von Attributen finden. Ich fand nur .update Methode und hilft nicht.

Danke

Antwort

0

Die Attribute Python Wörterbücher sind, so dass Sie del sie entfernen können.

Zum Beispiel

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

Ich nehme an, dass del Methode Sie arbeiten wird vorgeschlagen. Du hast mir eine nette Idee, ein remove_attribute Verfahren wie das (mit pop) zu bauen:

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

Wo TNODE der Zielknoten ist und attr ist das Attribut, wir entfernen möchten.

Verwandte Themen