python 编程一日一练-Python每日一练0013
问题
现在有多个字典或者映射,你想将它们从逻辑上合并为一个单一的映射后执行某些操作, 比如查找值或者检查某些键是否存在。
解决方案
使用collections库的ChainMap类,可以快速的将多个dict合并在一起
>>> from collections import ChainMap
>>> a = {'x': 1, 'z': 3 }
>>> b = {'y': 2, 'z': 4 }
>>> c = ChainMap(a, b)
>>> print(c['x'])
1
>>> print(c['y'])
2
>>> print(c['z'])
3
讨论
ChainMap可以将多个dict合并在一起,当做一个整体来处理,并且它比创建一个新的dict或者使用dict.update()速度要快
ChainMap的底层实现是将合并的字典存到一个list当中,这个list我们可以通过访问maps成员得到
>>> from collections import ChainMap
>>> a = {'x': 1, 'z': 3 }
>>> b = {'y': 2, 'z': 4 }
>>> c = ChainMap(a, b)
>>> print(c.maps)
[{'x': 1, 'z': 3}, {'y': 2, 'z': 4}]
对于查询操作,ChainMap会扫描这个list,直到找到key存在然后返回,所以上面的例子,我们的c['z']得到的是3
而对于增加和删除操作,ChainMap只会操作list中的第一个dict
另外一点需要注意的是,ChainMap是按引用存储的,意思是如果我们修改了原来的dict,这个修改是会被反射到ChainMap里,举个例子:
>>> from collections import ChainMap
>>> a = {'x': 1, 'z': 3 }
>>> b = {'y': 2, 'z': 4 }
>>> c = ChainMap(a, b)
>>> print(c['x'])
1
>>> a['x'] = 66
>>> print(c['x'])
来源
Python Cookbook
关注
欢迎关注我的微信公众号:python每日一练
python 编程一日一练-Python每日一练0013相关推荐
- python编程在哪里写-python入门该从哪里开始?
相信对于每个人而言,知道编程和学习编程这件事,出发点是不同的.汤哥在北京接触编程的时间是2013年,那个时候还在一个二线城市上大学,还没有这么多各种融资,各种互联网创业的氛围,大家想的更多的是一些线下 ...
- python编程方式_自学python编程的方法路线
怎么自学python编程 如何自学Python编程?一堆的Python教程却感觉无从下手呢?我想这应该是很多Python初学者正在纠结的问题. 今天想要分享给大家的是如何自学Python编程,学习这件 ...
- python编程300集免费-python 300本电子书合集
链接: https://pan.baidu.com/s/1CNlB35ASnDNlUGNCZJbiAA 提取码: fxig Q群:592857363 更多所在 数据科学速查表 零起点Python机器学 ...
- python编程输入标准-揭秘python编程技巧
揭秘python编程技巧 一.python的标准输入和输出[root@133 wc]# vim stdin.py #!/usr/bin/python #encoding:utf-8 import sy ...
- python编程入门-Python编程入门经典pdf(Python编程入门教程) 高清中文版
Python编程入门经典pdf(Python编程入门教程)下载.Python编程入门经典pdf高清版帮助各位更好的进行Python编程的学习以及理解,最经典的课题,最深入的概念,让你在Python编程 ...
- python开发cs程序_CSE209代做、代写Computer Graphics、代做CS/python编程设计代写Python程序|代做Processing...
CSE209代做.代写Computer Graphics.代做CS/python编程设计代写Python程序|代做ProcessingCSE209 Computer Graphics~1~CSE209 ...
- Python编程好学吗 为什么Python如此受欢迎
Python编程好学吗?为什么Python如此受欢迎?Python的包装能力.可组合性.可嵌入性都很好,可以把各种复杂性包装在Python模块里,暴露出漂亮的接口.因此,Python自然是大受欢迎. ...
- 手机版python编程软件下载,手机python编程软件
1.求 python 64位安装包下载 软件介绍: python是一款面向对象.解释型.动态数据类型的高级编程设计语言.它拥有语言上的简洁性.可读性和易维护性,在图形处理.数学处理.文本处理.系统编程 ...
- 树莓派python编程优点_树莓派为什么会使用python编程?为什么有时python运行效率不高?...
在许多编程语言中,Python的语法也有很大不同.Python使用空格或缩进来分隔不同的代码块.C语言和其他语言使用花括号来区分不同的代码块,例如if语句,Python使用冒号和缩进来定义代码块.这也 ...
- python 编程一日一练-python每日一练
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 过滤掉列表中的负数 筛选出字典{lilei: 79,jim: 88,lu ...
最新文章
- 网站网页编写需要注意哪些问题?
- 当模板方法遇到了委托函数,你的代码又可以精简了
- 业界对物联网技术最常见的三大误区解读
- C 标准库 - string.h
- 51单片机怎么显示当前时间_51单片机玩转物联网基础篇06-LCD1602液晶显示器
- 软件_crontab任务配置失败原因总结和技巧
- MyEclipse 8.6.1下载|MyEclipse 8下载|MyEclipse 8.6.1官网下载
- 如果更快的访问ESS系统?
- Threejs导入OBJ模型出错的一些经验之谈
- Java开发手册之二方库依赖
- 转载HTML实体字符
- echart显示多组数据
- 使用FFMPEG解码和OpenAL播放音乐
- 58同城2014校园招聘笔试题
- centOS6.5中部署java调用h2o中python包环境
- jQuery拆分字符串 split()并且遍历$.each()
- 从渲染原理谈前端性能优化
- 【缅怀】缅怀汶川地震记
- excel 快捷换行,去除空白换行符
- Android 高质量开发之崩溃优化,2020-2021字节跳动Android面试真题解析
热门文章
- Nlpir大数据知识图谱的落地指南
- group by具有去重的功能
- Jewels and Stones
- 导入外部项目无法识别为Web项目无法部署到tomcat
- How to open robotium-solo-1.4.0 javadoc.jar to get the information of robotium.
- asp.net webform 与asp.net mvc 混合开发项目总结
- jQuery 参考手册 - 事件
- Java7/8 中的 HashMap 和 ConcurrentHashMap
- English trip M1 - AC6 How to make salad? Teacher:Patrick
- [剑指offer] 替换空格