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

加载JSON文件时访问键遇KeyError问题求助

问题解答

JSON与Python类型对应关系

Python的json.load()会严格按照JSON结构转换为对应Python类型:

  • JSON 对象({...})→ Python 字典(dict)
  • JSON 数组([...])→ Python 列表(list)
  • JSON 字符串、数字、布尔值、null 分别对应 Python 的 str、int/float、bool、None

你加载后能打印整个列表,说明你的JSON文件根结构是数组,不是单个字典——列表没有「键」的概念,只有索引,直接访问键自然会报KeyError。

正确访问方式

假设你的JSON内容类似:

[
  {"username": "maccers", "email": "test@example.com"},
  {"username": "alice", "email": "alice@example.com"}
]

加载后需先通过索引取出列表中的字典元素,再访问对应键:

import json

# 加载JSON文件
with open('your_data.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

# 确认数据类型(可选,用于排查问题)
print(type(data))  # 输出 <class 'list'>

# 访问第一个元素的键
print(data[0]['username'])  # 输出 maccers

# 遍历所有元素并访问键
for user in data:
    print(f"用户名: {user['username']}, 邮箱: {user['email']}")

避免KeyError的键校验方法

方法1:使用字典get()方法

不存在目标键时返回指定默认值,不会触发报错:

# 取第一个元素的'username'键,不存在则返回'未知用户'
print(data[0].get('username', '未知用户'))

方法2:用in关键字检查键是否存在

if 'email' in data[0]:
    print(data[0]['email'])
else:
    print('该用户未填写邮箱')

方法3:批量校验必要键

遍历列表时,检查每个字典是否包含所有必填键:

required_keys = ['username', 'email']
for user in data:
    if all(key in user for key in required_keys):
        print(f"有效用户: {user['username']}")
    else:
        print("用户数据缺失必填键")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:40:55