python库Munch的使用记录
开头
日常操作字典发现发现并不是很便利,特别是需要用很多 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的使用记录的更多相关文章
- 11个并不广为人知,但值得了解的Python库
这是一篇译文,文中提及了一些不常见但是有用的Python库 原文地址:http://blog.yhathq.com/posts/11-python-libraries-you-might-not-kn ...
- Python 库大全
作者:Lingfeng Ai链接:http://www.zhihu.com/question/24590883/answer/92420471来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...
- Anaconda 安装 Python 库(MySQLdb)的方法
[已解决]Anaconda 安装 Python 库(MySQLdb)的方法 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 201 ...
- python库安装方法及下载依赖库
python库的安装方法 直接使用pip pip install xxx python第三方下载,可以在地址栏上输入所需库的名字,进行快速查找 源码安装 python setup.py install ...
- 哪些 Python 库让你相见恨晚?【转】
原文链接:https://www.zhihu.com/question/24590883/answer/92420471 原文链接:Python 资源大全 ---------------- 这又是一个 ...
- Python库资源大全
转载地址:https://zhuanlan.zhihu.com/p/27350980 本文是一个精心设计的Python框架.库.软件和资源列表,是一个Awesome XXX系列的资源整理,由BigQu ...
- Python 库/模块/工具收集
1 算法 1.1 字符串处理 re 正则表达式的标准库. StringIO / cStringIO 以读写文件的方式来操作字符串(有点类似于内存文件). cStringIO 是 C 语言实现的,提供高 ...
- Python库,让你相见恨晚的第三方库
环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具.pyenv – 简单的 Python 版本管理工具.Vex – 可以在虚拟环境中执行命令.virt ...
- Anaconda 安装 Python 库(MySQLdb)的方法-(转)
安装python库的过程中,最重要的地方就是版本需要兼容.其中操作系统为64位,Python为2.X 64位,下载安装文件的时候也要注意版本匹配.其中文件名中包含的cp27表示CPython 2.7版 ...
- 小众Python库介绍
Python 是世界上发展最快的编程语言之一.它一次又一次地证明了自己在开发人员和跨行业的数据科学中的实用性.Python 及其机器学习库的整个生态系统使全世界的用户(无论新手或老手)都愿意选择它.P ...
随机推荐
- I - Cloud Retainer's Game
I - Cloud Retainer's Game 传送门: I. Cloud Retainer's Game (codeforces.com) 题意: 在坐标轴上有2个边界:y=0和y=H.有n个质 ...
- python之pyqt5-第一个pyqt5程序-图像压缩工具(2.5版本,加入多线程进度条与文件drop)-小记
(如想转载,请联系博主或贴上本博地址) 题外:关于python的多线程 python因为GIL的原因,只能利用到单核CPU性能.如程序内多是计算或循环,多线程无啥意义:如程序内多IO操作,多线程可以避 ...
- ffmpeg gcc is unable to create an executable file C compiler test failed
ffmpeg 编译出现 #sudo ./configure --enable-shared --prefix=/usr/local/ffmpeg gcc is unable to create an ...
- redis学习(二)数据类型
hash类型 • string 类型的键值对集合 • redis 中数据类型不支持嵌套,例如不能在 hash 中设置值为 hash • 适合用于存储对象 • 每个 hash 可以存储 2 32 -1 ...
- Javaweb学习笔记第七弹
Maven依赖范围 对于Maven的安装配置等环境准备问题,可详细参考我的前几篇博客, 网址1:https://www.cnblogs.com/liuzijin/p/16654344.html 网址2 ...
- Spring:现代Java开发的必备框架
目录 Spring:现代Java开发的必备框架 Spring创建bean的生命周期以及对应的接口和注解 Spring使用三级缓存解决循环依赖的原理 Spring使用三级缓存创建bean的过程 Spri ...
- el与data的两种写法
el的两种写法 Vue初始化(被创建)后会判断有无el 有el:创建Vue实例对象的时候配置el属性 无el:通过vm.$mount('#root')指定el的值 data的两种写法 对象式:data ...
- Django-5
Django-5 1.Coookie 1.1 什么是cookie Cookie是储存在浏览器端的一小段文本数据(键值对). 被广泛用于在网站之间传输信息, 当您访问一个网站时,它会将一个Cookie发 ...
- Hive 与 HBase 之间的区别和联系
首先要知道 Hive 和 HBase 两者的区别,我们必须要知道两者的作用和在大数据中扮演的角色 概念 Hive 1.Hive 是 hadoop 数据仓库管理工具,严格来说,不是数据库,本身是不存储数 ...
- VUE3.x之Proxy 我们为什么要使用Proxy
Object.defineProperty 劫持数据 只是对对象的属性进行劫持 无法监听新增属性和删除属性 需要使用 vue.set, vue.delete 深层对象的劫持需要一次性递归 劫持数组时需 ...