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

Python3如何将API返回的类字典格式列表转换为真实dict类型

Python3 处理第三方API返回的嵌套字典中列表包裹字典问题

核心实现逻辑

  • 递归遍历嵌套字典的所有键值对
  • 识别到值为列表类型时,判断列表内元素是否为字典结构,按业务规则转换为标准字典

1. 结构转换函数(输出转换后的标准字典)

调用该函数传入API返回的原始嵌套字典,会直接返回所有列表内字典都合并为标准键值对的新字典:

def convert_nested(dict_obj):
    result = {}
    for key, value in dict_obj.items():
        if isinstance(value, dict):
            # 递归处理字典类型的值
            result[key] = convert_nested(value)
        elif isinstance(value, list):
            # 处理列表类型的值
            temp_dict = {}
            for item in value:
                if isinstance(item, dict):
                    # 合并列表内的所有字典,同键默认后面的覆盖前面的,可按需调整规则
                    temp_dict.update(convert_nested(item))
            # 若列表内没有可合并的字典,保留原列表
            result[key] = temp_dict if temp_dict else value
        else:
            # 其他基础类型直接保留
            result[key] = value
    return result

2. 改造后的打印函数(仅需打印场景用)

如果不需要修改原结构,只是要正确输出键:值格式的内容,可直接改造你现有的打印函数:

def print_nested(dict_obj):
    for key, value in dict_obj.items():
        if isinstance(value, dict):
            print_nested(value)
        elif isinstance(value, list):
            for item in value:
                if isinstance(item, dict):
                    print_nested(item)
                else:
                    print(key, ':', item)
        else:
            print(key, ':', value)

测试示例

输入测试数据:

api_data = {
    "base": "option",
    "data": [
        {"putCall": "CALL", "symbol": "MSFT_031723C250", "strike": 250}
    ]
}

调用convert_nested(api_data)返回结果:

{
    "base": "option",
    "data": {"putCall": "CALL", "symbol": "MSFT_031723C250", "strike": 250}
}

调用改造后的print_nested(api_data)输出:

base : option
putCall : CALL
symbol : MSFT_031723C250
strike : 250

注意事项

  • 如果列表内存在非字典类型的元素,函数会保留原元素不会强制转换
  • 如果列表内有多个字典且存在相同键,默认会用后出现的键值覆盖先出现的,你可以根据业务需求修改合并规则,比如将同键的值保存为列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 03:24:01