如何解决Networkx:在没有 for 循环的情况下更新图中所有节点的单个属性
我有一些代码可以更新图表的属性:
import networkx as nx
def update_nodes(graph):
values = dict.fromkeys(graph.nodes,True)
nx.set_node_attributes(graph,name='test_attribute',values=values)
print(f"graph.nodes.data(): {graph.nodes.data()}")
return graph
def loop(graph):
graph.graph['test_attribute'] = False
print(f"graph.nodes.data(): {graph.nodes.data()}")
print(f"graph.graph['test_attribute']: {graph.graph['test_attribute']}")
for node in range(0,len(graph.nodes)):
print(f"graph.nodes[node]['test_attribute']: {graph.nodes[node]['test_attribute']}")
return graph
graph = nx.erdos_renyi_graph(n = 3,p = 0.1,seed = 5)
for i in range(0,2):
graph = update_nodes(graph)
graph = loop(graph)
这不会更新节点属性,而是将更新作为单独的实体应用于图形。有没有办法批量更新整个节点集的单个属性,而无需在某处停留在 for node in (range(0,len(graph.nodes)): graph.nodes[node]['test_attribute'] = <new_value>
中?
编辑:我应该澄清一下,我对图形内容的这种迭代不满意的原因是,在此之后的第二个循环运行之前,需要为所有节点重置这个初始值,这引起了质疑属性的值并基于此遵循不同的逻辑路径。所以我希望避免对所有节点进行两次迭代,尽管第一个循环的计算强度要小得多,而且希望是不必要的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。