开头

日常操作字典发现发现并不是很便利,特别是需要用很多 get('xxx','-') 的使用,就觉得很烦,偶然看到Kuls大佬公众号发布的一篇技术文有对 python munch库的使用, 使得字典操作的方法变得简便了,特意尝试并记录下来使用。

安装

pip install munch

munch方法的使用

基本方法和字典操作一样,参考代码如下

# munch库
from munch import * # 创建新的字典,有两种方法
# 1、新建字典1
demo = Munch(name='james', age='20')
demo2 = Munch(names='kobe', ages='40')
print(demo, demo2)
print(demo.name) # james 取值的时候可以像orm一样直接提取, 就不需要用get,或者 ['name']
print(demo.get('name'), demo2['name]) # 这样操作也是支持的 # 2、新建字典2
demo3 = Munch()
demo3.name = 'ad'
demo3.ages = 26
print(demo3) # 3、修改元素
demo3.name = 'morix'
print(demo3) # 直接就可以修改 # 4、 删除元素
demo3.pop('name') # 第一种删除
print(demo3)
del demo3["age"] # 第二种删除
print(demo3) # 5、多字典合并,或者增加单个值
demo.update(demo2) # 输出为none,
print(demo) # 得到一个新得munch对象
# 或者
demo.update({'ponies':'are prettty!'},hello=42) # 得到一个新得munch对象
# 或者
ss = Munch({**demo, **demo2})
print(ss) # 得到一个新的munch对象 # 6、 一个字典里面包含多个对象,并可以取出
demo = Munch(name='james', age='20', na=[1,2,3], demo_dict=Munch(new='test'))
print(demo.na) # 取出可以循环的列表
print(demo.demo_dict.new) # 链式调用

上面是方法是一些比较日常的使用,除了这些,还有一些方法要记住

# 1、 像字典一样取出所有的key
demo = Munch(name='james', age='20', na=[1,2,3], demo_dict=Munch(new='test'))
print(demo.keys()) # dict_keys(['name', 'age', 'na', 'demo_dict']) # 2、 取出所有的value
print(demo.values()) # 3、key和value 一起取出
ss = [(k,demo[k]) for k in demo] # 第一种方法
for k,v in demo.items(): # 第二种方法
print(k, v) # 4、字典解构
demo2 = Munch(knights='lbj', ni='lakes')
ss = "The {knights} who say {ni}!".format(**demo2) # 5、当键值对不符合要求的时候,需要使用get方法
print(demo2.get('hao','0')) # hao 不存在demo2的键值对里面, 会返回0,如果直接 demo2.hao, 会爆 AttributeError: hao 的错误 # 或者可以设定返回的默认值
demo2 = DefaultMunch('-', name='lbj')
print(demo2.hao) # 返回设定好的 '-' # 或者可以设定返回一个工厂函数(列表,元组,字典)
demo2 = DefaultFactoryMunch(list, name='lbj')
print(demo2.hao) # 返回 []
print(demo2) # 查看munch对象的时候会看到结构为 DefaultFactoryMunch(list, {'name': 'lbj', 'hao': []})

完成。 这个库就可以用了

python库Munch的使用记录的更多相关文章

  1. 11个并不广为人知,但值得了解的Python库

    这是一篇译文,文中提及了一些不常见但是有用的Python库 原文地址:http://blog.yhathq.com/posts/11-python-libraries-you-might-not-kn ...

  2. Python 库大全

    作者:Lingfeng Ai链接:http://www.zhihu.com/question/24590883/answer/92420471来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...

  3. Anaconda 安装 Python 库(MySQLdb)的方法

    [已解决]Anaconda 安装 Python 库(MySQLdb)的方法 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 201 ...

  4. python库安装方法及下载依赖库

    python库的安装方法 直接使用pip pip install xxx python第三方下载,可以在地址栏上输入所需库的名字,进行快速查找 源码安装 python setup.py install ...

  5. 哪些 Python 库让你相见恨晚?【转】

    原文链接:https://www.zhihu.com/question/24590883/answer/92420471 原文链接:Python 资源大全 ---------------- 这又是一个 ...

  6. Python库资源大全

    转载地址:https://zhuanlan.zhihu.com/p/27350980 本文是一个精心设计的Python框架.库.软件和资源列表,是一个Awesome XXX系列的资源整理,由BigQu ...

  7. Python 库/模块/工具收集

    1 算法 1.1 字符串处理 re 正则表达式的标准库. StringIO / cStringIO 以读写文件的方式来操作字符串(有点类似于内存文件). cStringIO 是 C 语言实现的,提供高 ...

  8. Python库,让你相见恨晚的第三方库

    环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具.pyenv – 简单的 Python 版本管理工具.Vex – 可以在虚拟环境中执行命令.virt ...

  9. Anaconda 安装 Python 库(MySQLdb)的方法-(转)

    安装python库的过程中,最重要的地方就是版本需要兼容.其中操作系统为64位,Python为2.X 64位,下载安装文件的时候也要注意版本匹配.其中文件名中包含的cp27表示CPython 2.7版 ...

  10. 小众Python库介绍

    Python 是世界上发展最快的编程语言之一.它一次又一次地证明了自己在开发人员和跨行业的数据科学中的实用性.Python 及其机器学习库的整个生态系统使全世界的用户(无论新手或老手)都愿意选择它.P ...

随机推荐

  1. 117、商城业务---分布式事务---RabbitMQ延时队列

    1.定时任务存在的问题 即任务过期时间为30min,任务在第31min过期,但是在第60分钟才被扫描到 2.延时队列 是先设置一个过期队列,里面消息过期后不会丢弃而是通过交换机放到另一个队列中.从这个 ...

  2. C#比较类/接口、Dictionary 排序

    作者:l625208058 链接:https://www.jianshu.com/p/cd1be6652570 先 F12 看下 List.Sort() 方法 public void Sort(int ...

  3. archlinux 源配置 桌面美化 终端美化 常用软件 grub配置

    简介 本文讲对archlinux进行一些基础系统的配置.常用安装的安装,美化进行配置,先看一下美化后的效果吧 配置pacman和使用AUR(archlinuxcn源) archlinux采用滚动更新的 ...

  4. CentOS /RHEL 系统更新安全补丁的方法

    在 Linux 系统上,其中一个最重要的需求就是保持定期更新最新的安全补丁,或者为相应的 Linux 版本更新可用的安全补丁.在这篇文章中,我们将分享如何在 CentOS/RHEL 7/6 版本中设置 ...

  5. Dcat admin 多文件上传,七牛云云端上传

    进入官网  Dcat Admin - Php后台开发框架 这里要选择1.x 下面来安装框架 安装完laravel之后,需要修改.env文件,设置数据库链接设置正确 安装 dcat-admin comp ...

  6. Linux & 标准C语言学习 <DAY3>

    C语言简介:     BCPL->New B->C->UNIX->Minix->Linux->gcc     C语言诞生于1971~1973年,美国贝尔实验室,肯. ...

  7. RHEL系列邮箱配置mail.rc和s-nail.rc

    RHEL8 1.首先安装postfix和mailx dnf install postfix mailx -y 2.开启postfix服务开机运行 systemctl enable --now post ...

  8. Spring MVC 和 Struts 的区别是什么?

    1. 拦截机制的不同 Struts2 是类级别的拦截,每次请求就会创建一个 Action,和 Spring 整合时 Struts2 的 ActionBean 注入作用域是原型模式 prototype, ...

  9. TCC 分布式事务解决方案

    更多内容,前往 IT-BLOG 一.什么是 TCC事务 TCC 是Try.Confirm.Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作:预处理Try.确认Confirm.撤销Canc ...

  10. ES5新增数组常见方法(indexof/forEach/map/filter)

    新增的数组常见方法:以下说明中,红色为必选参数,蓝色为可选参数 1.indexOf(data,start); 用于返回某个数组或者字符串中规定字符或者字符串的位置: var arr = [" ...