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

Python 3.6递归实现JSON字典嵌套与扁平化展示求助

解决嵌套字典展示与扁平化的递归实现方案

嘿,我来帮你搞定这个问题!既然你是Python新手,我会尽量把代码解释得清楚些,完全用递归实现,不用任何第三方库,完美适配Python 3.6~

第一步:处理输入JSON并转为字典

你提供的JSON片段缺少外层大括号,先补全并转为Python字典:

import json

# 补全合法的JSON字符串并转为字典
json_str = '{"level1_key1":"1", "level1_key2":{ "level2_key1":"2", "level2_key2":{ "level3_key1":"Max depth" } }}'
nested_dict = json.loads(json_str)

第二步:展示嵌套字典

其实嵌套字典的展示非常简单,直接用repr()函数就能得到你需要的结构化输出(Python 3中字符串默认是Unicode,不会显示u前缀,但结构和你示例完全一致):

print(f"Nested dict: {repr(nested_dict)}")

输出效果:

Nested dict: {'level1_key1': '1', 'level1_key2': {'level2_key1': '2', 'level2_key2': {'level3_key1': 'Max depth'}}}

第三步:递归实现字典扁平化

下面是核心的递归函数,专门用来把嵌套字典扁平化,把所有层级的键都提取到顶层:

def flatten_dict(input_dict):
    # 初始化空字典存储扁平化结果
    flattened_result = {}
    
    for key, value in input_dict.items():
        # 如果当前值是字典,递归处理子字典
        if isinstance(value, dict):
            # 把递归返回的子字典结果合并到主结果中
            flattened_result.update(flatten_dict(value))
        else:
            # 如果不是字典,直接将键值对加入结果
            flattened_result[key] = value
    
    return flattened_result

# 生成扁平化字典并打印
flattened_dict = flatten_dict(nested_dict)
print(f"Flatten dict: {repr(flattened_dict)}")

输出效果:

Flatten dict: {'level1_key1': '1', 'level2_key1': '2', 'level3_key1': 'Max depth'}

递归函数的工作逻辑

  1. 每次调用函数时,先创建一个空字典用来存储当前层级的扁平化结果
  2. 遍历输入字典的每个键值对:
    • 如果值是字典,就递归调用自身处理这个子字典,再把返回的结果合并到当前结果里
    • 如果值不是字典,直接把这个键值对加入结果字典
  3. 最后返回整理好的扁平化字典

内容的提问来源于stack exchange,提问作者Aktan A.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:08:53