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

Python3 执行图节点goodness迭代计算时触发'float'对象不可下标的TypeError

报错:TypeError: 'float' object is not subscriptable 成因解析

该报错的核心含义是:代码尝试用方括号索引语法(即对象[键/下标])操作浮点数(float)类型的值,但浮点数本身不支持索引取值操作。

触发报错的完整逻辑链路

  • 代码中获取节点入边的语句为in = G.in_edges(node, data='weight'),该写法对应NetworkX图接口的固定返回规则:当in_edges()方法传入的data参数为具体的单条边属性名(如这里的'weight')时,返回的每条边为长度3的元组,结构是(边起点, 边终点, 对应属性的直接值)。
  • 按照这个返回规则,循环遍历边时拿到的edge[2]本身就是边权重的float数值,不再是存储所有边属性的字典。
  • 原代码在计算节点goodness时写的edge[2]["weight"],默认edge[2]是属性字典,试图从字典里取"weight"键对应的值;但此时edge[2]已经是浮点数,对浮点数执行字典键索引的操作,就会直接触发该TypeError。

可落地的修正方向

  • 保留当前data='weight'的入边获取写法:把权重取值的代码行改为g += fairness[edge[0]] * edge[2],跳过多余的字典索引步骤,直接使用已经拿到的权重值参与计算。
  • 保留原代码中edge[2]["weight"]的取值逻辑:把入边获取的语句改为in_edges(node, data=True),此时方法返回的每条边中edge[2]才是存储所有边属性的字典,可正常通过键取权重值。

注:代码中将内置关键字in作为变量名的写法也存在隐患,后续建议替换为其他变量名避免意外的语法冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 21:36:04