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 ...
随机推荐
- AWS、谷歌云、Azure:云计算安全功能比较
每个云平台提供给客户用以保护其云资产安全工具和安全功能都不一样. 公有云安全建立在共担责任概念基础之上:大型云服务提供商交付安全超大规模环境,但保护推上云端一切是客户自己责任.对企业而言,这种安全责任 ...
- 安卓自动化查看包名和activity名的方法
1,cmd下,adb shell "dumpsys window | grep mCurrentFocus" 2,CMD中输入adb logcat ActivityManager: ...
- 记录一次mybatis pagehelper count order by 不生效
https://sample.blog.csdn.net/article/details/119216433?spm=1001.2101.3001.6650.5&utm_medium=dist ...
- java xml转为json的两种方法
java xml转为json的两种方法 <?xml version="1.0" encoding="utf-8" ?><auibinsuran ...
- alt_flash_open_dev读写EPCS出现“Cannot open flash device”的解决办法
转载 http://www.corecourse.cn/forum.php?mod=viewthread&tid=28317 在对EPCS读写操作时alt_flash_open_dev(EPC ...
- SQL作业编辑报错 无法将COM组件......
在命令行运行下列命令 数据库为2005cd C:\Program Files\Microsoft SQL Server\90\DTS\Binnregsvr32 dts.dll
- IOS开发基础之核心动画 基础动画、关键帧、组动画案例
// // ViewController.m // 30-核心动画 // // #import "ViewController.h" @interface ViewControll ...
- Javaweb学习笔记第六弹
本章节的存在意义是:学到PreparedStatement反应较慢,理解不透彻,来做个比较,加深印象 详细讲述PrepareStatement 与 Statement 连接数据库的部分区别 在我学习的 ...
- P4555 [国家集训队]最长双回文串 回文树(回文自动机)简单题
贴个题目链接:https://www.luogu.org/problem/P4555 题目:输入长度为n的串S,求S的最长双回文子串T,即可将T分为两部分X,Y,(∣X∣,∣Y∣≥1)且X和Y都是回文 ...
- UI界面实现SSH登录服务器并执行命令监控
一.通过paramiko实现SSH远程登录服务器.执行命令并返回信息: 二.通过wxpython实现UI化: 三.代码实现如下: 1)主程序MainUI #coding:utf8 #!/usr/bin ...