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

Python中键不固定的字典列表按指定键提取值出现KeyError如何解决

问题原因

出现KeyError是因为你的列表中部分字典不存在c键(示例数据里倒数两个字典就没有该键),直接通过d['c']访问不存在的键就会触发该异常。

解决方案

根据你的使用需求,可以选择以下两种方案:

  • 方案1:保留所有条目,缺失的c键填充默认值
    使用字典内置的get()方法,第二个参数为键不存在时返回的默认值,比如可以设置为空列表[]、None等:
# 缺失c键时默认返回空列表
[(d['t'], d['p'], d['s'], d.get('c', [])) for d in data]

运行后输出结果如下:

[(1633098324445950024, 139.55, 15, [14, 37, 41]),
 (1633098324445958000, 139.55, 100, [14, 41]),
 (1633098324445958498, 139.55, 60, [14, 37, 41]),
 (1633098324446013523, 139.55, 52, [14, 37, 41]),
 (1633098324472392943, 139.555, 100, []),
 (1633098324478972256, 139.555, 100, [])]

如果t、p、s这几个键也有可能缺失,所有取值都可以用get()方法处理,比如d.get('t', 0)。

  • 方案2:仅保留同时包含所有需要提取键的条目
    在列表推导式中添加筛选条件,过滤掉缺少目标键的字典:
target_keys = ['t', 'p', 's', 'c']
[(d['t'], d['p'], d['s'], d['c']) for d in data if all(k in d for k in target_keys)]

运行后会自动过滤掉没有c键的最后两条数据,输出结果如下:

[(1633098324445950024, 139.55, 15, [14, 37, 41]),
 (1633098324445958000, 139.55, 100, [14, 41]),
 (1633098324445958498, 139.55, 60, [14, 37, 41]),
 (1633098324446013523, 139.55, 52, [14, 37, 41])]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:57:03