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

如何将多根元素JSON读取为Python dict而非list?

问题

想要读取包含多个元素的JSON文件并转为Python的dict,但当前读取后得到的是list。移除JSON的[]只能读取第一个元素,询问是否需要修改JSON格式,以及如何处理。

原始JSON文件

[{
  "id": 1,
  "first_name": "Jeanette",
  "last_name": "Penddreth",
  "email": "jpenddreth0@census.gov",
  "gender": "Female",
  "ip_address": "26.58.193.2"
},{
  "id": 2,
  "first_name": "Giavani",
  "last_name": "Frediani",
  "email": "gfrediani1@senate.gov",
  "gender": "Male",
  "ip_address": "229.179.4.212"
},{
  "id": 3,
  "first_name": "Noell",
  "last_name": "Bea",
  "email": "nbea2@imageshack.us",
  "gender": "Female",
  "ip_address": "180.66.162.255"
},{
  "id": 4,
  "first_name": "Willard",
  "last_name": "Valek",
  "email": "wvalek3@vk.com",
  "gender": "Male",
  "ip_address": "67.76.188.26"
}]

原始Python代码

import json

with open("data.json", "r") as file:
    data = file.read()
    json_obj = json.loads(data)

print(type(json_obj))

当前输出

<class 'list'>

预期输出

<class 'dict'>

解决方案

方案一:修改JSON格式(符合标准JSON结构)

标准JSON要求仅有一个根元素,你当前的根元素是数组(对应Python的list)。要得到dict,只需把数组包裹在一个对象里,新增一个键(比如"users")存放数组即可:

修改后的JSON:

{
  "users": [
    {
      "id": 1,
      "first_name": "Jeanette",
      "last_name": "Penddreth",
      "email": "jpenddreth0@census.gov",
      "gender": "Female",
      "ip_address": "26.58.193.2"
    },{
      "id": 2,
      "first_name": "Giavani",
      "last_name": "Frediani",
      "email": "gfrediani1@senate.gov",
      "gender": "Male",
      "ip_address": "229.179.4.212"
    },{
      "id": 3,
      "first_name": "Noell",
      "last_name": "Bea",
      "email": "nbea2@imageshack.us",
      "gender": "Female",
      "ip_address": "180.66.162.255"
    },{
      "id": 4,
      "first_name": "Willard",
      "last_name": "Valek",
      "email": "wvalek3@vk.com",
      "gender": "Male",
      "ip_address": "67.76.188.26"
    }
  ]
}

对应Python读取代码:

import json

with open("data.json", "r") as file:
    json_obj = json.load(file)

print(type(json_obj))  # 输出 <class 'dict'>
# 通过 json_obj["users"] 可获取原用户数组

方案二:不修改JSON,在Python中转换为dict

如果不想改动JSON文件,可以将读取到的list转为以id为键的dict,方便通过id快速定位用户:

import json

with open("data.json", "r") as file:
    user_list = json.load(file)

# 转换为以id为键的dict
user_dict = {user["id"]: user for user in user_list}

print(type(user_dict))  # 输出 <class 'dict'>
# 示例:获取id为1的用户
print(user_dict[1])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:45:00