Python3:Python原生字典终结者,这个库要逆天吗!!!

1、引言

小屌丝:鱼哥,这七夕过完了,周末也过完了, 你这两天没少忙活吧!!
小鱼:怎么叫没少忙活? 你这话里有话啊!
小屌丝:我嘴笨,不会用高大尚的词汇来描述~ ~
小鱼:你可以 gu wen 了…
小屌丝:别啊,我这还有个问题要问你呢 。
小鱼:不会,不了解,不知道!!
小屌丝:是妹子让我问…关于python原生字典的知识…
小鱼:妹子啊,妹子不妹子的无所谓,我就是单纯的分享知识…
小屌丝:我信你个鬼…你个糟老头子,坏的狠~ ~
小鱼:不信就不信,妹子信就行。

今天我们来分享一下, Python原生字典的终结者,也是一款黑科库,
自动我用了这个库,从此告别双手 原生字典

2、munch库介绍

在介绍munch库之前,我们先唠叨一下Python字典,
字典是Python中基础的数据结构之一,使用字典,必须要简单粗暴
但是,即使这么一个无欲无求,与世无争的数据结构,仍然有不少人"很隔路",看不惯它。

解释一下"隔路":
隶属东北话,东北方言,
意思:爱搞特殊,与众不同,不合群…

王大爷:这一局,我认输。
王大妈:这仅仅代表他自己,我表示不服。
小鱼:这都凌晨一点了,大爷大妈,还不睡呢!!!

待王大爷和大妈睡着后,我们先简单看下,直接调用Python原生字典的示例:

代码

>>> profdict = dict(name = 'Carl_奕然')
>>> profdict
{'name': 'Carl_奕然'}
>>> profdict['name']
'Carl_奕然'

截图
在这里插入图片描述
那么,能不能直接输入 profdict.name 就可以显示结果呢??
这必须的,这就是我们今天分享的知识点munch

2.1 安装与确认

2.1.1 安装

万事第一步,就是安装
我们就直接pip install

pip install munch

当然,可以不用安装,直接引用万能库
我这里,还是需要按规矩办事,所以就直接install一下

安装完如下图:
在这里插入图片描述

2.1.2 确认

安装完,我们小试一下munch~
验证munch的Munch()类是否继承自原生字典。

代码

# -*- coding:utf-8 -*-
# @Time   : 2021-08-15
# @Author : carl_DJ

from munch import Munch
profdict = Munch()
print(f'{isinstance(profdict,dict)}')

结果

在这里插入图片描述

2.2 操作

2.3.1 兼容字典操作

因为Munch继承自dict,所有dict的各种操作也适用于Munch对象。

  • 首先 增删改查走一个:

为了能更直观的展示结果,小鱼就用Python自带的IDEL来编写

# -*- coding:utf-8 -*-
# @Time   : 2021-08-15
# @Author : carl_DJ

>>> from munch import Munch
>>> profdict = Munch()
>>> profdict.name = 'Carl_奕然'
>>> profdict.age = '22'
>>> profdict
Munch({'name': 'Carl_奕然', 'age': '22'})

#增加性别元素
>>> profdict['gender'] = 'male'
>>> profdict
Munch({'name': 'Carl_奕然', 'age': '22', 'gender': 'male'})

#修改性别元素,有男→女
>>> profdict['gender'] = 'female'
>>> profdict
Munch({'name': 'Carl_奕然', 'age': '22', 'gender': 'female'})

#删除元素
##pop方法删除
>>> profdict.pop('age')
'22'
>>> profdict
Munch({'name': 'Carl_奕然', 'gender': 'female'})

## del方法删除
>>> del profdict['gender']
>>> profdict
Munch({'name': 'Carl_奕然'}

  • 其次,展示一些常用方法:

#获取字典的key
>>> profdict.keys()
dict_keys(['name'])

#获取字典的Value
>>> profdict.values()
dict_values(['Carl_奕然'])

#获取name
>>> profdict.get('name')
'Carl_奕然'

>>> profdict.setdefault('age','22')
'22'
>>> profdict
Munch({'name': 'Carl_奕然', 'age': '22'})

2.3.2 设置返回默认值

我们都知道,访问字典中的不存在的key时,会报 KeyError的错误:
示例

>>> profdict = {}
>>> profdict['class']
Traceback (most recent call last):
  File "<pyshell#23>", line 1, in <module>
    profdict['class']
KeyError: 'class'

对于这种情况,我们会使用两种方法来规避:

  • get规避示例
>>> profdict.get('class','undefined')
'undefined'
  • DefaultMunch 规避示例
>>> from munch import DefaultMunch
>>> profdict = DefaultMunch("undefined", {"name": "Carl_奕然"})
>>> profdict
DefaultMunch('undefined', {'name': 'Carl_奕然'})
>>> profdict.age
'undefined'
>>> profdict
DefaultMunch('undefined', {'name': 'Carl_奕然'})

DefaultMunch的好处就是,在你访问不存在的key时,给你返回一个设定好的默认值
如上面代码的 undefined

2.3.3 自动创建Key

DefaultMunch仅当你访问不存在的Key时返回一个默认值,但是这个行为并不会修改原munch对象的任何内容。
如果想先修改原来munch的内容,可以尝试DefaultFactoryMunch,在这传入一个工厂函数。

示例


>>> from munch import DefaultFactoryMunch
>>> profdict = DefaultFactoryMunch(list, name='Carl_奕然')
>>> profdict
DefaultFactoryMunch(list, {'name': 'Carl_奕然'})
>>>
>>> profdict.brothers
[]
>>> profdict
DefaultFactoryMunch(list, {'name': 'Carl_奕然', 'brothers': []})

2.3.4 序列化

Munch还支持序列化为JSON或者YAML格式的字符串对象。

  • 转换成JSON
>>> from munch import Munch
>>> munch_odt = Munch(foo=Munch(lol=True), bar=200, msg='hello,Carl')
>>>
>>> import json
>>> json.dumps(munch_odt)
'{"foo": {"lol": true}, "bar": 200, "msg": "hello,Carl"}'
  • 转换成YAML
>>> from munch import Munch
>>> munch_odt = Munch(foo=Munch(lol=True), bar=200, msg='hello,Carl')
>>>
>>> import yaml
>>> yaml.dump(munch_odt)
'!munch.Munch\nbar: 200\nfoo: !munch.Munch\n  lol: true\nmsg: hello,Carl\n'
>>> print(yaml.dump(munch_odt))
!munch.Munch
bar: 200
foo: !munch.Munch
  lol: true
msg: hello,Carl

#使用safe_dump 去掉 !munch.Munch
>>> print(yaml.safe_dump(munch_odt))
bar: 200
foo:
  lol: true
msg: hello,Carl

这里,我们使用了safe_dump 把 !munch.Munch 给去掉。

3、总结

看到这里,今天的分享,又要告一段落了…
小屌丝:鱼哥,鱼哥,先等下,我发现,你今天写的很规范,很正经,没有开车。
小鱼:… 你… 我… 你… 我每一篇写的都很正经的好吧。
小屌丝:拉倒吧,就你,我还不知道, 都是二档起步的人…
小鱼:我…你… 你…
在这里插入图片描述
小鱼友情提醒:七夕已过,注意休息。

关于更多的munch内容,请移步官网https://pypi.org/search/?q=munch

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carl_奕然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值