Networkx中add_star函数无法为节点添加属性的问题求助
问题原因及解决办法
你遇到的问题核心是对nx.add_star()函数的参数作用理解错啦!
nx.add_star()里的weight=1参数,是用来给生成的边添加属性的,不是给节点设置属性。当你执行nx.add_star(G, [0,1,2], weight=1)时,实际上是在节点0与1、0与2之间创建了两条边,这两条边的weight属性被设为1,但节点本身不会自动带上这个属性,所以你调用G.nodes.data()看到的都是空字典。- 你可以验证一下边的属性:执行
print(G.edges.data()),会输出类似EdgeDataView([(0, 1, {'weight': 1}), (0, 2, {'weight': 1})])的结果,这就说明属性确实是加到边上了。
如果要给节点添加属性,你可以这么做:
- 单独给节点设置:
G.nodes[0]['weight'] = 1 G.nodes[1]['weight'] = 1 G.nodes[2]['weight'] = 1
- 在添加节点时直接指定属性:
nx.add_nodes_from([(0, {'weight':1}), (1, {'weight':1}), (2, {'weight':1})]) nx.add_star(G, [0,1,2])
内容的提问来源于stack exchange,提问作者K9Lucario
相关产品推荐
相关产品推荐

