本文最后更新于 2025-08-20,文章内容可能已经过时。

Python 多级字典取值

0x01 前言

最近遇到一个需求,即想取到多级字典中某一级中的值,网上找了一下没有啥好办法,大多都是写一个函数,作为一个强迫症,想要优雅点儿,不想写太长的函数,于是用lambda函数加递归,写了一个一句话函数。

0x02 Python实现

python代码如下:

getSubDict = lambda dic, sub : dic if sub == []  else getSubDict(dic.get(sub[0], {}), sub[1:])

0x03 用法

getSubDict接受两个参数,第一个参数为需要取值的 字典,第二个参数为 列表,列表中为多级字典key的顺序。如如果取值不存在则会返回 {}

test = {
    "level_1": "1111",
    "level_2": {
        "level_3": "3333"
    }
}

getSubDict = lambda dic, sub : dic if sub == []  else getSubDict(dic.get(sub[0], {}), sub[1:])

# 取第一级字典的值
getSubDict(test, ['level_1'])
# output: 1111

# 取第一级字典的值
getSubDict(test, ['level_2'])
# output: {"level_3": "3333"}

# 取第二级字典的值
getSubDict(test, ['level_2', 'level_3'])
# output: 3333

# 取不存在key的值
getSubDict(test, ['level_4'])
# output: {}

运行结果如下:

image