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

如何在未知深度的嵌套字典中取值?附Python实现函数

从嵌套对象中动态取值的Python函数

处理嵌套字典或列表时,如果预先不知道目标值的嵌套深度,常规的链式取值写法就会失效。这里分享一个可以动态根据路径取值的函数,无需关注嵌套层级。

举个例子:

my_dict = {"People": [{"name": "Alice"}, {"name": "Bob"}]}
  • 取"People"对应的值,常规写法是my_dict["People"](路径长度1)
  • 取"Bob"所在的字典,常规写法是my_dict["People"][1](路径长度2)

当你不确定路径长度时,这个get_nested_object函数就能派上用场。它接受两个参数:

  • data:待搜索的嵌套对象(字典或列表)
  • path:列表格式的取值路径,比如取Bob的路径就是["People", 1]

函数代码

def get_nested_object(data: dict, path: list):
    # 取出路径中的第一个键/索引
    key = path[0]
    # 处理字典类型
    if isinstance(data, dict):
        if key in data:
            # 路径只剩最后一层,返回键值对
            if len(path) == 1:
                return {key: data[key]}
            # 递归处理剩余路径
            else:
                return get_nested_object(data[key], path[1:])
    # 处理列表类型
    elif isinstance(data, list):
        # 路径只剩最后一层,返回对应索引的元素
        if len(path) == 1:
            return data[key]
        # 递归处理剩余路径
        else:
            return get_nested_object(data[key], path[1:])
    # 非字典/列表类型返回提示
    else:
        return "Invalid data"

注意事项

该代码未包含数据验证和错误处理(比如路径不存在、索引越界等情况),使用时需要根据需求补充相关逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 00:56:04