NetworkX添加节点报错:module 'networkx' has no attribute 'add_nodes_from'
解决NetworkX中
AttributeError: module 'networkx' has no attribute 'add_nodes_from'问题 嘿,这个坑我之前也踩过!你出错的核心原因是把add_nodes_from当成了NetworkX模块的全局函数来调用,但它其实是你创建的图对象的实例方法。
先看你代码里的问题行:
G = nx.add_nodes_from(auth_dict)
这里你试图用nx.前缀调用这个方法,但正确的姿势是在已经创建好的G这个MultiGraph实例上调用它。
给你修正后的代码:
import networkx as nx auth_dict = {"albert": 1, "Barbie": 3, "Charlie": 8} G = nx.MultiGraph() # 调用图实例的add_nodes_from方法,这才是正确用法 G.add_nodes_from(auth_dict) # 这样会把字典的键(作者名)作为节点添加 # 如果想把论文数量绑定为节点属性(比如命名为paper_count),可以这么写: G.add_nodes_from(auth_dict.items(), paper_count=0) # 或者更直观的循环方式: for author, count in auth_dict.items(): G.add_node(author, paper_count=count)
补充几个关键细节:
- NetworkX 2.2版本完全支持
add_nodes_from方法,你参考的文档没问题,只是调用方式搞错了——必须是图对象.add_nodes_from(),而非nx.add_nodes_from()。 - 直接传
auth_dict给add_nodes_from时,只会把作者名字作为节点添加;如果需要把论文数作为节点的附加属性,记得用items()把键值对传进去,或者用循环逐个添加节点并指定属性。
内容的提问来源于stack exchange,提问作者Robert Alexander
相关产品推荐
相关产品推荐

