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

如何编写Python函数动态提取多层嵌套字典的所有值?

处理多层嵌套字典提取所有值的Python实现

要提取多层嵌套字典里的所有值,核心思路是递归遍历:遇到字典就继续深入遍历其值,非字典类型则直接加入结果列表。

基础实现(仅处理字典嵌套)

def extract_all_values(nested_dict):
    values = []
    for val in nested_dict.values():
        # 判断当前值是否为字典,是则递归提取,否则直接添加
        if isinstance(val, dict):
            values.extend(extract_all_values(val))
        else:
            values.append(val)
    return values

测试示例

# 多层嵌套字典测试用例
sample_dict = {
    "name": "Alice",
    "contact": {
        "email": "alice@example.com",
        "phone": {
            "home": "123456",
            "work": "789012"
        }
    },
    "age": 30
}

print(extract_all_values(sample_dict))
# 输出: ['Alice', 'alice@example.com', '123456', '789012', 30]

扩展实现(支持列表中的嵌套字典)

如果你的场景里还存在列表嵌套字典的情况,可以调整函数,同时支持字典和列表的遍历:

def extract_all_values(nested_obj):
    values = []
    # 处理字典:遍历其值
    if isinstance(nested_obj, dict):
        items = nested_obj.values()
    # 处理列表:遍历其元素
    elif isinstance(nested_obj, list):
        items = nested_obj
    # 非可遍历的目标类型,直接返回单元素列表
    else:
        return [nested_obj]
    
    for item in items:
        values.extend(extract_all_values(item))
    return values

扩展版本测试

extended_sample = {
    "name": "Bob",
    "hobbies": [
        {"name": "reading", "genre": "fiction"},
        {"name": "hiking", "difficulty": "medium"}
    ]
}

print(extract_all_values(extended_sample))
# 输出: ['Bob', 'reading', 'fiction', 'hiking', 'medium']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:57:01