Python 多级字典取值

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值