Python小酷库系列:5个常用的dict属性化访问扩展库

5个常用的dict属性化访问扩展库


在前面我们详细讲解了 BoxMunch这两个dict属性化访问的扩展库,总体而言它们主要用于提升配置文件数据、JSON对象数据的可读性,减少了代码中双引号。在这一领域中还有dotmap、addict 和 easydict等,本节我们就来对比一下这五个dict属性化访问扩展库。

鉴于 box、munch、dotmap、addict 和 easydict在基本使用上都比较接近,在此不再赘述,本节主要考察它们在嵌套结构高级功能性能上的差异,以帮助我们在实际使用中做出合适的选择。

嵌套结构

功能addictmunchboxdotmapeasydict
自动解析嵌套
自动创建嵌套✅ d.user.name = “Alice”❌ d[‘user’] = Munch(); d.user.name = “Alice”✅ Box(default_box=True)✅ d.user.name = “Alice”❌ 需手动设置子项为 EasyDict
浅拷贝
深拷贝✅ merge_update

高级功能

功能addictmunchboxdotmapeasydict
默认值(auto create)✅ default_box
深度合并⚠️ 有限支持✅ merge_update
属性与键冲突保护
JSON / YAML 友好
冻结/只读模式✅(可配置)

性能

使用 timeit 进行 .user.name 和[‘user’][‘name’] 的性能测试(百万次访问)(单位:秒)

原生 dictaddictmunchboxdotmapeasydict
访问时间0.07s~0.40s~0.30s~0.60s~0.35s~0.25s
赋值时间0.08s~0.45s~0.35s~0.65s~0.38s~0.28s
嵌套创建✅ 快✅ 中✅ 中

综合建议

在进行本次对比时,以上五个扩展库在pypi上的最后release时间分别为:

  • box 2025
  • easydict 2024
  • munch 2023
  • dotmap 2022
  • addict 2020
    考虑到用新不用旧的原则以及上述综合因素,建议一般情况下可以使用 box,对性能有一定要求时,可以选用easydict
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值