You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从不可变子图视图创建可变有向图时遇节点修改报错

解决NetworkX中'AtlasView'对象无法赋值的问题

错误原因

你通过new_graph['my_node']访问节点邻接关系时,得到的是AtlasView类型对象——这是NetworkX的只读视图,用来避免原图数据被误改,所以不允许直接通过下标赋值修改边属性,才触发了TypeError。

正确修改边属性的三种方法

方法1:用set_edge_attributes()设置属性

不管是单个还是批量边属性,都可以用这个官方方法:

# 替换'target_node'为'my_node'的实际邻接节点
nx.set_edge_attributes(new_graph, {('my_node', 'target_node'): {'weight': 25}})

方法2:用add_edge()更新已有边属性

如果这条边已经存在,add_edge()会直接覆盖原有属性:

new_graph.add_edge('my_node', 'target_node', weight=25)

方法3:通过edges字典直接修改

直接访问new_graph.edges里的可修改属性字典:

new_graph.edges['my_node', 'target_node']['weight'] = 25

子图创建简化技巧

你原来生成子图的步骤可以简化,不用先创建视图再复制,直接用subgraph()生成:

new_graph = nx.DiGraph(G.subgraph(my_nodes))

内容的提问来源于stack exchange,提问作者wolfrevo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 19:15:50