pythonic way to delete edge attributes
为了从networkx图中删除属性,我有以下代码:
1 2 3 | for (n1,n2) in graph.edges(data=False): for att in att_list: graph[n1][n2].pop(att, None) |
有没有比这更像Python的方法?
如果您只想删除一些列表中的属性,比如
1 2 3 | for n1, n2, d in graph.edges(data=True): for att in att_list: d.pop(att, None) |
或者你可以用
请参阅安全地从字典中删除多个键,了解如何从字典中删除多个键(这就是
或者,如果要清除所有属性,请注意,如果我们设置了
1 2 | for (n1, n2, d) in graph.edges(data=True): d.clear() |
号
这是一个完整的例子
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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] > {} |