如何编写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
相关产品推荐
相关产品推荐

