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

Python中如何通过键名列表动态查询嵌套JSON对象的对应值

实现方案

方法1:循环遍历实现(无第三方依赖,易调试)

逐次取出列表中的键,逐层访问字典即可,兼容任意长度的嵌套键列表:

a = {'s1':12134,'s2':{'s3':678,'s4':'blah','s5':'sample'}}
l = ['s2','s3']

result = a
for key in l:
    result = result[key]

print(result) # 输出结果为678

如果需要处理键不存在的异常,避免抛出KeyError中断程序,可以加异常捕获逻辑:

result = a
for key in l:
    try:
        result = result[key]
    except KeyError:
        result = None # 可替换为你需要的默认返回值
        break

方法2:用functools.reduce实现简洁写法

适合写单行表达式的场景:

from functools import reduce
import operator

a = {'s1':12134,'s2':{'s3':678,'s4':'blah','s5':'sample'}}
l = ['s2','s3']

result = reduce(operator.getitem, l, a)
print(result) # 输出结果为678

也可以封装成通用工具函数,支持默认值返回:

def get_nested_value(data, keys, default=None):
    from functools import reduce
    import operator
    try:
        return reduce(operator.getitem, keys, data)
    except (KeyError, IndexError, TypeError):
        return default

# 调用示例
print(get_nested_value(a, l)) # 678
print(get_nested_value(a, ['s2', 'not_exist_key'])) # None

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:39:01