我做以下几件事。但是,当我试图修改new_graph中的节点时,就会得到一个TypeError: 'AtlasView' object does not support item assignment
def get_my_nodes(source=None, distance=0):
pre = [n for n in nx.dfs_preorder_nodes(G, source=source, depth_limit=distance)]
post = [n for n in nx.dfs_preorder_nodes(G.reverse(), source=source, depth_limit=distance)]
return set(pre + post)
my_nodes = get_my_nodes(n, distance=dist)
def filter_node(n):
if n in my_nodes:
return True
return False
subgraph_view = nx.subgraph_view(G, filter_node=filter_node)
new_graph = nx.DiGraph(subgraph_view.copy())
new_graph['my_node']['weight'] = 25 # <- this raises a TypeError: 'AtlasView' object does not support item assignment发布于 2022-11-07 14:37:27
您正在访问AtlasView,它仅在内部级别上读取(请参阅医生..。)。
最简单的解决方案是使用nx.set_node_attributes
def get_my_nodes(source=None, distance=0):
pre = [n for n in nx.dfs_preorder_nodes(G, source=source, depth_limit=distance)]
post = [n for n in nx.dfs_preorder_nodes(G.reverse(), source=source, depth_limit=distance)]
return set(pre + post)
my_nodes = get_my_nodes(n, distance=dist)
def filter_node(n):
if n in my_nodes:
return True
return False
subgraph_view = nx.subgraph_view(G, filter_node=filter_node)
new_graph = nx.DiGraph(subgraph_view.copy())
#new_graph['my_node'] is an AtlasView object (read only)
nx.set_node_attributes(new_graph, {'my_node': 25}, name='weight')https://stackoverflow.com/questions/74347881
复制相似问题