我在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方法并没有帮助。
谢谢
答案 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是我们要删除的属性。