前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >entity_addict | 像对象一样去操作字典

entity_addict | 像对象一样去操作字典

作者头像
用户9897904
发布2022-07-14 18:28:01
1950
发布2022-07-14 18:28:01
举报
文章被收录于专栏:PipelinePipeline

大家早上好

今天要给大家分享的是一个python的库

要不是周末在写工蜂的API的时候突然需要用到addict这个库

我都差点忘了我写过的一个名为entity_addict的库

entity_addict是扩展了addict的部分功能之前是本想合并到addict上面的

但是作者建议是单独作为一个新的python包

从而保持addict的简单和纯粹

(addict核心代码不超过200行)

addict

在讲entity_addict之前我们来看看addict

2.1k的star就可见它的优秀

addict的用法也简单,把一个字典传递给Dict对象后就可以像对象一样的去操作字典了

代码语言:javascript
复制
>>> from addict import Dict
>>> body = Dict()
>>> body.query.filtered.query.match.description = 'addictive'
>>> body.query.filtered.filter.term.created_by = 'Mats'
body = {
    'query': {
        'filtered': {
            'query': {
                'match': {'description': 'addictive'}
            },
            'filter': {
                'term': {'created_by': 'Mats'}
            }
        }
    }
}
代码语言:javascript
复制
>>> from addict import Dict
>>> mapping = Dict()
>>> mapping.a.b.c.d.e = 2
>>> mapping
{'a': {'b': {'c': {'d': {'e': 2}}}}}

从上面的例子就可以看到,真好用!

entity_addict

现在我们再来看entity_addict

代码语言:javascript
复制
from entity_addict import entity_addict
    
@entity_addict
def get_dict_data_a():
    return {"key_name": "value"}

data = get_dict_data_a()
print(data.key_name)

@entity_addict
def get_dict_data_b():
    return [{"key_name": "value"}]

for data in get_dict_data_b():
    print(data.key_name)
    
@entity_addict
def get_dict_data_c():
    return [
        {"key_name": "value"},
        {"key": [{"sub_key1": 1}, {"sub_key2": 2}]}
    ]
data = get_dict_data_c()
print(data[1].key[1].sub_key2)

addict它不能支持列表中的字典,也不能支持多层嵌套中的列表字典

我们可以在日常工作中很多地方都能用到addict或者entity_addict毕竟只要跟字典打交道都可以用的上它

赶紧收藏起来把

好了今天的分享就到这了

我们下次再见

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Pipeline 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档