Python如何获取任意深度嵌套字典的所有键及对应层级全路径?
需求实现方案
这个需求完全可以在Python中实现,通过递归遍历嵌套字典的结构即可同时输出单独键列表和点分隔的全路径列表。
示例实现代码
1. 定义输入字典
nested_dict = { 'a1': {'b1': {'c1': 'val'}, 'b2': { 'c2': { 'd2': 'terminal'} } }, 'a2': {'b2': 'val'} }
2. 递归遍历函数
def extract_dict_keys(d, parent_path="", keys_list=None, paths_list=None): # 初始化结果容器 if keys_list is None: keys_list = [] if paths_list is None: paths_list = [] for key, value in d.items(): # 收集单层级键 keys_list.append(key) # 拼接全路径 current_path = f"{parent_path}.{key}" if parent_path else key paths_list.append(current_path) # 若值仍为字典,继续递归遍历 if isinstance(value, dict): extract_dict_keys(value, current_path, keys_list, paths_list) return keys_list, paths_list
3. 调用与输出
all_keys, all_paths = extract_dict_keys(nested_dict) # 输出所有单键列表 print(all_keys) # 输出:['a1', 'b1', 'c1', 'b2', 'c2', 'd2', 'a2', 'b2'] # 输出全路径列表 print(all_paths) # 输出:['a1', 'a1.b1', 'a1.b1.c1', 'a1.b2', 'a1.b2.c2', 'a1.b2.c2.d2', 'a2', 'a2.b2']
扩展说明
如果你的实际数据中存在「列表嵌套字典」的场景,只需要在递归判断逻辑中增加列表类型判断,遍历列表元素后继续递归即可适配。
内容的提问来源于stack exchange,提问作者ben890
相关产品推荐
相关产品推荐

