开头

日常操作字典发现发现并不是很便利,特别是需要用很多 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. HTTP 协议相关

    一. HTTP常见请求头 1. Host (主机和端口号) 2. Connection (连接类型) 3.Upgrade-Insecure-Requests (升级为HTTPS请求) 4. User- ...

  2. MarkDown学习day1

    # Markdown学习 ## 标题: #+"空格"+标题名字 为一级为标题 ##+"空格"+标题名字 为二级标题 同理几级标题就是几个#,最多支持6级标题 # ...

  3. 明解STM32—GPIO理论基础知识篇之八种工作模式

    一.引言 在之前围绕STM32的GPIO的基本结构进行了介绍,图1为STM32的5V容忍的GPIO口内部基本结构图,图2为GPIO的基本结构中各个模块部分的概述. 阅读GPIO基本结构的内容能够对GP ...

  4. Java笔记第十二弹

    Lambda表达式的标准格式 三要素:形式参数.箭头.代码块 格式:(形式参数)->(代码块) 形式参数:如果有多个参数,参数之间用逗号隔开:如果没有参数,留空即可 ->代表指向动作 La ...

  5. Servlet和Maven项目

    Servlet执行流程 通过默认端口号访问到Tomcat服务器 通过类名访问到对应的项目 通过自定义的相应路径,访问到注释中的同名路径 即为执行流程 相应的Servlet对象由Tomcat服务器创建, ...

  6. 关于如何编写好金融科技客户端SDK的思考

    引言 回想起来,我在目前的团队(金融科技领域)待了有很长一段时间了,一直在做SDK研发,平时工作中经历过大刀阔斧一蹴而就的喜悦,也经历过被一个问题按在地上摩擦,无奈"废寝忘食"的不 ...

  7. windows 系统下 workerman 在同一个运行窗口中开启多个 websocket 服务

    目录 开启多个 ws 服务失败 开启服务失败解决办法 同一个窗口中运行 开启多个 ws 服务失败 正常情况下,如果你想开启多个 websocket 服务的话 只要在一个文件中,输入 new Worke ...

  8. 声网Agora 教育 aPaaS 灵动课堂升级:UI与业务逻辑分离,界面、功能自定义更灵活

    声网Agora 教育 aPaaS 产品灵动课堂现已升级至 v1.1.0 版本.声网Agora 灵动课堂可以帮助教育机构和开发者最快 15 分钟上线自有品牌.全功能的在线互动教学平台,节省 90% 开发 ...

  9. salesforce零基础学习(一百一十六)workflow -> flow浅谈

    本篇参考: https://help.salesforce.com/s/articleView?id=sf.migrate_to_flow_tool_considerations_workflow.h ...

  10. flutter feature---->quick action

    reference: https://www.filledstacks.com/snippet/managing-quick-actions-in-flutter/ code import 'dart ...