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

Python合并字典列表仅最后一个生效问题及JSON转字典方法咨询

问题分析与解决方案

1. 循环合并字典后只剩最后一个的原因

你使用new_dcit.update(i)时,update()方法会将字典i的键值对合并到new_dcit中,如果存在重复键,新值会直接覆盖旧值。而你请求返回的用户列表里,每个用户字典都包含id、name、email这类重复键,每一次循环都会覆盖之前的键值对,最终自然只剩最后一个用户的字典内容。

正确的合并方式

根据实际需求,有两种常用处理方案:

  • 用唯一标识作为外层键:比如以用户的id为键,将整个用户字典作为值存储,避免键冲突:
import requests

my_request = requests.get("https://jsonplaceholder.typicode.com/users")
request_parse = my_request.json()

new_dict = {}
for user in request_parse:
    new_dict[user['id']] = user  # 用id作为唯一键区分不同用户

for key, val in new_dict.items():
    print(key, " : ", val)
  • 收集相同键的所有值为列表:如果需要把所有用户的同类型数据汇总到一起,比如将所有用户名存到name键对应的列表中:
import requests
from collections import defaultdict

my_request = requests.get("https://jsonplaceholder.typicode.com/users")
request_parse = my_request.json()

new_dict = defaultdict(list)
for user in request_parse:
    for k, v in user.items():
        new_dict[k].append(v)

for key, val in new_dict.items():
    print(key, " : ", val)

2. JSON对象转Python字典的其他方法

除了requests库自带的response.json()方法,还有以下两种常见方式:

  • 使用标准库json的loads()方法:直接解析响应的文本内容:
import json
import requests

my_request = requests.get("https://jsonplaceholder.typicode.com/users")
request_parse = json.loads(my_request.text)
  • 使用simplejson库(需先通过pip install simplejson安装):功能与标准库json类似,部分场景下性能更优:
import simplejson as json
import requests

my_request = requests.get("https://jsonplaceholder.typicode.com/users")
request_parse = json.loads(my_request.text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 05:39:54