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

Python中如何将多层嵌套字典转换为键路径值拼接格式的列表

实现嵌套字典的键路径拼接转换

实现思路为通过递归/迭代遍历嵌套字典,每进入一层字典就将当前层的键追加到路径缓存中,直到遍历到非字典类型的值时,将完整路径与值用冒号拼接后存入结果列表即可。

递归实现代码(写法简单直观,适合嵌套层级不深的场景)

def dict_to_path_list(dct):
    result = []
    def traverse(current_dict, path_cache):
        for key, value in current_dict.items():
            new_path = path_cache + [key]
            if isinstance(value, dict):
                # 值仍为字典,继续向下遍历
                traverse(value, new_path)
            else:
                # 遍历到末端值,拼接后存入结果
                result.append(":".join(map(str, new_path + [value])))
    traverse(dct, [])
    return result

# 测试效果
dct = {"a":1,"b":{"c":2,"d":{"z":5,"t":12}}}
lst = dict_to_path_list(dct)
print(lst)
# 输出:['a:1', 'b:c:2', 'b:d:z:5', 'b:d:t:12']

迭代实现代码(用栈实现,避免超深嵌套字典导致递归栈溢出)

def dict_to_path_list_iter(dct):
    result = []
    stack = [(dct, [])]
    while stack:
        current_dict, path_cache = stack.pop()
        # 反转key顺序保证输出顺序和递归实现一致,因为栈是后进先出结构
        for key in reversed(list(current_dict.keys())):
            value = current_dict[key]
            new_path = path_cache + [key]
            if isinstance(value, dict):
                stack.append((value, new_path))
            else:
                result.append(":".join(map(str, new_path + [value])))
    return result

注意事项

  • 代码中使用map(str, ...)处理键和值,兼容非字符串类型的键/值拼接
  • 如果需要处理列表等其他嵌套结构,可自行补充对应类型判断扩展逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:54:04