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

如何修复NetworkX中'DegreeView'对象无'values'属性的AttributeError?

错误原因与解决方法

错误根源

NetworkX中G.degree()返回的DegreeView对象是迭代器结构,每个元素是(节点ID, 节点度数)的元组,它并没有values()方法——这就是触发AttributeError的直接原因。旧版NetworkX可能返回字典,因此旧代码的.values()写法在新版本中失效。

修复后的代码

直接从DegreeView中提取度数值即可,优化后的代码如下:

import networkx as nx

def graph_identification():
    methods = []
    for G in P1_Graphs:
        # 提取所有节点的度数到列表
        degree_list = [d for n, d in G.degree()]
        # 获取去重并排序的度数取值
        degree_values = sorted(set(degree_list))
        # 计算度数分布占比(直接用列表统计更高效)
        node_count = nx.number_of_nodes(G)
        degree_hist = [degree_list.count(i) / node_count for i in degree_values]
        
        clustering = nx.average_clustering(G)
        shortest_path = nx.average_shortest_path_length(G)
        
        if len(degree_hist) > 10:
            methods.append('PA')
        elif clustering < 0.1:
            methods.append('SW_H')
        else:
            methods.append('SW_L')
    return methods

graph_identification()

关键修改点

  • 用列表推导式[d for n, d in G.degree()]直接提取所有节点的度数,避免重复遍历DegreeView
  • 提前计算node_count,避免重复调用nx.number_of_nodes(G)提升效率
  • 移除错误的.values()调用,改用直接操作度数列表的方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:56:15