Python如何提取嵌套字典所有键的全父级路径用作Excel表头
嵌套字典全层级键路径提取实现
核心通过递归遍历所有字典层级,逐层拼接键路径,碰到叶子值就记录路径和值的映射,输出结果可以直接用来生成Excel。
实现代码
def extract_flat_paths(nested_dict, parent_path=""): flat_result = {} for key, val in nested_dict.items(): # 拼接当前键的完整路径 current_path = f"{parent_path}/{key}" if parent_path else key if isinstance(val, dict): # 仍是嵌套字典,递归进入下一层处理 flat_result.update(extract_flat_paths(val, current_path)) else: # 到达叶子节点,存储路径和对应值 flat_result[current_path] = val return flat_result # 用给出的示例字典测试 test_dict = { "name":"Pete", "last-name": "Pencil", "adres":{ "street": "example1street", "number":"5", "roommate":{ "gender":"male" } } } flat_data = extract_flat_paths(test_dict)
运行结果
执行后得到的flat_data结构如下,每个键就是要求的/分隔表头,值就是对应单元格内容:
{ 'name': 'Pete', 'last-name': 'Pencil', 'adres/street': 'example1street', 'adres/number': '5', 'adres/roommate/gender': 'male' }
适配xmltodict解析场景的补充说明
- xmltodict默认解析出的
@开头属性节点、#text文本节点,上述代码可以直接兼容,路径会自动拼接这类特殊键 - 如果XML存在重复同级标签,xmltodict会把对应值解析为列表,可以在判断逻辑中新增
isinstance(val, list)分支,遍历列表时把元素索引拼接到路径中,比如生成adres/roommate/0/gender这类格式,按需调整即可。
内容的提问来源于stack exchange,提问作者Barteljaap balregen
相关产品推荐
相关产品推荐

