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: {}
运行结果如下: