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

如何遍历多层嵌套字典,提取同时含aaa与zzz键的键值对列表?

解决方案

思路

递归遍历字典的每一层,核心步骤如下:

  1. 检查当前层级的字典是否同时包含aaa和zzz两个键;
  2. 若存在,将这两个键值对格式化为指定字符串,组成元组加入结果列表;
  3. 递归处理当前字典中所有值为字典的子节点,重复上述检查逻辑。

实现代码

d = {
    "aaa":{
        "bbb":"xyz",
        "ccc":{
            "description":"xyz",
            "data":"abc"
        },
        "description":"xyz"
    },
    "xxx":{
        "description":"xyz",
        "bbb":{
            "ccc":{
                "ddd":{
                    "description":"xyz"
                },
                "aaa":{
                    "description":{
                        "hhh": "xyz"
                    }
                },
                "zzz":{
                    "description":"xyz"
                }
            }
        }
    },
    "lll":{
        "description":"xyz",
        "bbb":{
            "ccc":{
                "hhh":{
                    "description":"xyz"
                },
                "ooo":{
                    "description":"xyz",
                    "aaa":{
                        "ddd":{
                            "description":"xyz"
                        }
                    },
                    "zzz":{
                        "ddd":{
                            "description":"xyz"
                        }
                    }
                },
                "zzz":{
                    "description":"xyz"
                }
            }
        }
    }
}

result = []

def check_nested_dict(current_dict):
    # 检查当前层级是否同时存在目标键
    if 'aaa' in current_dict and 'zzz' in current_dict:
        # 格式化为要求的字符串格式
        aaa_entry = f"aaa: {repr(current_dict['aaa'])}"
        zzz_entry = f"zzz: {repr(current_dict['zzz'])}"
        result.append((aaa_entry, zzz_entry))
    
    # 递归遍历所有子字典节点
    for value in current_dict.values():
        if isinstance(value, dict):
            check_nested_dict(value)

# 执行遍历逻辑
check_nested_dict(d)

# 打印最终结果
print(result)

输出结果

运行代码后,将得到符合要求的结果:

[
    ("aaa: {'description': {'hhh': 'xyz'}}", "zzz: {'description': 'xyz'}"),
    ("aaa: {'ddd': {'description': 'xyz'}}", "zzz: {'ddd': {'description': 'xyz'}}")
]

关键说明

  • 使用isinstance(value, dict)判断值类型,比type(value) is dict更灵活,支持字典子类;
  • repr()函数确保字典值的字符串表示与原结构一致;
  • 递归逻辑会遍历每一层字典,不会遗漏任何可能包含目标键的层级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:25:44