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

NetworkX调用set_node_attributes传入dict报错unhashable type如何解决?

报错原因

你遇到的报错是NetworkX版本迭代导致的参数顺序变更引发的:
你参考的是旧版本NetworkX的文档,旧版本set_node_attributes的参数顺序为(图对象, 属性名, 属性值字典);但在NetworkX 2.1及之后的主流版本中,该方法的参数顺序调整为(图对象, 属性值字典, 属性名)。
你传参时把属性名和属性值字典的位置放反,函数会将你传入的字符串'degree_centrality'识别为要给所有节点统一赋值的常量,将后续传入的字典识别为属性名。而属性名要求是可哈希类型(字符串、数值等),字典属于不可哈希类型,因此触发TypeError: unhashable type: 'dict'报错。

正确使用方法

当前主流版本中,仅需要调换属性值字典和属性名的参数位置即可,示例如下:

# 度中心性属性赋值
degree_centrality_dict = nx.degree_centrality(G)
nx.set_node_attributes(G, degree_centrality_dict, 'degree_centrality')

# 特征向量中心性属性赋值
eigenvector_dict = nx.eigenvector_centrality(G)
nx.set_node_attributes(G, eigenvector_dict, 'eigenvector')

赋值完成后可通过以下方式验证属性是否设置成功:

# 查看节点0的degree_centrality属性值
print(G.nodes[0]['degree_centrality'])

如果你使用的是2.0及之前的旧版本NetworkX,保持你原有的参数顺序即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:54:04