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

如何从嵌套字典中提取值?Python嵌套字典取值报错TypeError的排查

问题分析与解决

咱们来拆解下你遇到的错误原因:

你写的列表推导式[item['quantity'] for d_ in data_dict.values() for item in d_]存在两处逻辑问题:

  1. data_dict.values()里第一个元素是parts对应的列表["part1", "part2", "part3", "part4"],当你遍历这个列表时,item是单个字符串(比如"part1"),这时候尝试item['quantity']就会触发TypeError——字符串只能用整数作为索引,不能用字符串。
  2. 就算跳过了列表,当你遍历零件字典(比如{'price': 3.99, 'quantity': 32})的元素时,item会是'price'、'quantity'这些键,同样是字符串,依然无法用['quantity']索引。

正确的解法有两种,你可以根据需求选择:

解法1:利用已有的parts列表(最直接)

既然data_dict['parts']已经给出了所有零件的名称,直接遍历这些名称去取对应字典的quantity即可:

quantities = [data_dict[part]['quantity'] for part in data_dict['parts']]
# 输出结果: [32, 2, 4, 0]

解法2:过滤非字典类型的值(不依赖parts键)

如果不想依赖parts这个键,可以先判断每个值是否是字典,再提取quantity:

quantities = [d['quantity'] for d in data_dict.values() if isinstance(d, dict)]
# 输出结果同样是: [32, 2, 4, 0]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 19:07:43