为了从networkx图中删除属性,我有以下代码:
for (n1,n2) in graph.edges(data=False):
for att in att_list:
graph[n1][n2].pop(att, None)
有没有更Python的方式来做到这一点?
如果只想删除某些列表中的一些属性,请说 att_list
for n1, n2, d in graph.edges(data=True):
for att in att_list:
d.pop(att, None)
或者,if att in d: del d[att]
如果麻烦的是您pop
返回的最后一行将返回您未使用的内容,则可以将其替换为。与您的代码相比,改进之处在于可以让data=True
我d
立即得到,而不必graph[n1][n1]
稍后引用。
有关如何从字典中删除多个键(这是安全的),请参阅安全地从字典中删除多个键d
。从根本上讲,这是您解决问题后要解决的问题d
。
或者,如果要清除所有属性,请注意,如果我们设置data=True
,那么graph.edges
还会返回一个包含属性的字典。清除此词典。
for (n1, n2, d) in graph.edges(data=True):
d.clear()
这是一个完整的例子
import networkx as nx
G=nx.Graph()
G.add_edge(1,2,weight=2)
G.edge[1][2]
> {'weight': 5}
for (n1, n2, d) in G.edges(data=True):
d.clear()
G.edge[1][2]
> {}
#just to check the edge in the opposite order
G.edge[2][1]
> {}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句