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

如何从字典列表提取指定元素?解决KeyError报错问题

如何从存储字典的变量中提取指定字典?

我在变量bookR中存储了一组字典数据:

{'User-ID': '2345667', 'ISBN': '265838929355X', 'Rating': '0'}
{'User-ID': '2345635', 'ISBN': '3456477588844', 'Rating': '5'}
{'User-ID': '2345632', 'ISBN': '9890876776388', 'Rating': '4'}
{'User-ID': '2767888', 'ISBN': '2234566663200', 'Rating': '7'}

我想要提取其中两个字典分别存入userA和userB,预期结果:

print(userA)
# output: {'User-ID': '2345667', 'ISBN': '265838929355X', 'Rating': '0'}

print(userB)
# output:{'User-ID': '2767888', 'ISBN': '2234566663200', 'Rating': '7'}

但使用以下代码时出现KeyError错误:

print(bookR)

userA = bookR[1]

userB = bookR[4]

print(userA)
print(userB)

解决方案

问题核心

出现KeyError的原因是**bookR并非列表类型**:如果直接把多个字典无结构地写在一起,Python只会识别最后一个字典,此时用数字索引访问会被当成字典的键来解析,自然找不到对应键而报错。

正确实现步骤

  1. 修正bookR的存储结构
    必须将所有字典放入列表中,这样才能通过索引访问元素:

    bookR = [
        {'User-ID': '2345667', 'ISBN': '265838929355X', 'Rating': '0'},
        {'User-ID': '2345635', 'ISBN': '3456477588844', 'Rating': '5'},
        {'User-ID': '2345632', 'ISBN': '9890876776388', 'Rating': '4'},
        {'User-ID': '2767888', 'ISBN': '2234566663200', 'Rating': '7'}
    ]
    
  2. 通过索引提取目标字典
    Python列表索引从0开始,所以第一个字典对应索引0,最后一个对应索引3:

    userA = bookR[0]
    userB = bookR[3]
    
    print(userA)
    # 输出: {'User-ID': '2345667', 'ISBN': '265838929355X', 'Rating': '0'}
    print(userB)
    # 输出: {'User-ID': '2767888', 'ISBN': '2234566663200', 'Rating': '7'}
    

特殊情况处理(如果数据是字符串格式)

如果bookR是从文件或其他来源读取的字符串格式数据,需要先转换为列表字典:

import ast

# 假设原始数据为字符串
bookR_str = """
{'User-ID': '2345667', 'ISBN': '265838929355X', 'Rating': '0'}
{'User-ID': '2345635', 'ISBN': '3456477588844', 'Rating': '5'}
{'User-ID': '2345632', 'ISBN': '9890876776388', 'Rating': '4'}
{'User-ID': '2767888', 'ISBN': '2234566663200', 'Rating': '7'}
"""
# 分割字符串并转换为字典列表
bookR = [ast.literal_eval(line.strip()) for line in bookR_str.split('\n') if line.strip()]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:35:10