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

如何通过字符串路径获取嵌套字典中的指定值?

实现嵌套字典的路径取值函数my_func

当然可以实现这个功能!核心思路就是把传入的路径字符串拆分成层级节点列表,然后顺着嵌套字典的结构逐层遍历,最终定位到对应的值。下面是具体的实现方案,包含基础版和更实用的容错版:

基础实现(适配你的路径格式)

针对你用反斜杠\分隔层级的路径格式,我们可以这样写函数:

def my_func(d, path):
    # 拆分路径为层级列表,注意Python中单个反斜杠是转义字符,所以要处理成可识别的分隔符
    levels = path.split('\\')
    current_node = d
    for level in levels:
        current_node = current_node[level]
    return current_node

测试你的示例

用你提供的字典测试一下,注意传入路径时的反斜杠处理(要么用双反斜杠,要么用原始字符串):

d = { "message": "...", "type": { "color": "...", "severity": "high" } }
# 方式1:双反斜杠转义
print(my_func(d, 'type\\severity'))  # 输出: 'high'
# 方式2:原始字符串(更简洁)
print(my_func(d, r'type\severity'))  # 输出: 'high'

增强容错版(避免报错)

上面的基础版如果遇到不存在的路径,或者中途遇到非字典类型的节点,会直接抛出KeyError或TypeError。如果想要更健壮的实现,可以添加异常处理,返回默认值:

def my_func(d, path, default=None):
    levels = path.split('\\')
    current_node = d
    try:
        for level in levels:
            current_node = current_node[level]
        return current_node
    except (KeyError, TypeError):
        # 处理路径不存在、节点不是字典等异常情况
        return default

容错测试示例

# 访问不存在的路径
print(my_func(d, 'type\\non_existent_key'))  # 输出: None
# 自定义默认提示
print(my_func(d, 'message\\color', default='指定路径不存在'))  # 输出: '指定路径不存在'

小提示

如果之后你想改用其他分隔符(比如更常见的点.),只需要把split('\\')改成split('.'),就能适配'type.severity'这样的路径格式啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:39:53