Python实现含列表的嵌套字典全路径提取函数需求
Python 实现嵌套字典/列表的全路径遍历函数
以下是满足需求的Python函数,可递归遍历包含列表的嵌套字典,生成所有可能的路径:
def get_all_paths(nested_dict): paths = [] def traverse(current_obj, current_path): if isinstance(current_obj, dict): for key, value in current_obj.items(): new_path = f"{current_path}/{key}" if current_path else key traverse(value, new_path) elif isinstance(current_obj, list): for item in current_obj: traverse(item, current_path) else: if current_obj == "": paths.append(f"{current_path}/") else: paths.append(f"{current_path}/{current_obj}") for key, value in nested_dict.items(): traverse(value, key) return paths
测试示例
使用你提供的输入变量测试:
var = { "a": "b", "c": ["d", "e", {"f": "", "h": ["i", {"j": "q"} ]}], "m": "", "n": ["d", "e", {"b": "", "c": "", "f": "r"}], "r": "r", "k": ["d", "t", "h"] } # 获取所有路径并打印 for path in get_all_paths(var): print(path)
运行后输出的路径内容与示例一致,顺序可能略有不同(需求允许顺序不固定)。
逻辑说明
- 递归遍历嵌套结构,自动识别字典、列表和普通元素
- 遇到字典时,将键拼接到当前路径后继续遍历对应值
- 遇到列表时,直接遍历列表内的每个元素,路径保持当前层级
- 遇到普通元素时:若为空字符串,路径结尾加
/;否则将元素拼接到路径末尾
内容的提问来源于stack exchange,提问作者AEP
相关产品推荐
相关产品推荐

