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

Python中如何将多个独立字典合并为单个字典?

问题:合并API返回的司机姓名与车辆ID为单一字典

我试图在Python中从API返回结果创建一个新字典,目的是获取司机姓名列表,并将其与API服务自带的车辆ID配对。当前代码如下:

url = url

headers = {
    "accept": "application/json",
    "authorization": auth
}

response = requests.get(url, headers=headers)
response = response.json()
for doc in response['data']:
    try:
        doc['id'],
        doc['staticAssignedDriver']['name']
    except:
        pass
    else:
        names = {
            doc['staticAssignedDriver']['name']: doc['id']
        }
        names.update(names)
        print(type(names))
        print(names)

这段代码会打印出多个独立的姓名-ID字典,例如:

{'name1':'id1'}
<class 'dict'>
{'name2':'id2'}
<class 'dict'>

我希望将这些合并为一个单一字典,格式如下:

{'name1': 'id1', 'name2': 'id2'}

目前每次循环生成的姓名/ID对都会成为独立的names变量,请问如何将它们合并为一个单一字典?


解决方案

你需要在循环外部初始化一个空字典,然后在循环内部将每个姓名-ID对添加到这个字典中,而不是每次循环都重新创建新的字典。同时要避免无差别捕获异常(这会隐藏其他潜在错误),以及去掉无效的names.update(names)操作(这只是将字典和自身合并,没有实际作用)。

修改后的完整代码:

import requests  # 确保导入requests库

url = url
headers = {
    "accept": "application/json",
    "authorization": auth
}

response = requests.get(url, headers=headers)
response_data = response.json()

# 循环外初始化空字典
driver_vehicle_map = {}

for doc in response_data['data']:
    try:
        # 先提取所需值,确保键存在
        vehicle_id = doc['id']
        driver_name = doc['staticAssignedDriver']['name']
    except KeyError:
        # 仅捕获键不存在的情况,避免隐藏其他异常
        continue
    # 将键值对添加到字典中
    driver_vehicle_map[driver_name] = vehicle_id

# 打印最终合并后的字典
print(driver_vehicle_map)

关键修改说明:

  • 提前初始化字典:driver_vehicle_map = {}放在循环外面,确保整个循环都在同一个字典中添加数据。
  • 直接赋值添加键值对:每次循环中用driver_vehicle_map[driver_name] = vehicle_id将新的配对添加到字典,自动合并。
  • 更精准的异常捕获:把except:改为except KeyError:,只处理id或staticAssignedDriver['name']不存在的情况,不会忽略其他错误(比如API返回格式错误)。
  • 移除无效操作:删掉names.update(names),这个操作没有意义,不会帮你合并数据。

运行修改后的代码,就能得到一个包含所有司机姓名与对应车辆ID的单一字典。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:35:50