问题

现在有多个字典或者映射,你想将它们从逻辑上合并为一个单一的映射后执行某些操作, 比如查找值或者检查某些键是否存在。

解决方案

使用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相关推荐

  1. python编程在哪里写-python入门该从哪里开始?

    相信对于每个人而言,知道编程和学习编程这件事,出发点是不同的.汤哥在北京接触编程的时间是2013年,那个时候还在一个二线城市上大学,还没有这么多各种融资,各种互联网创业的氛围,大家想的更多的是一些线下 ...

  2. python编程方式_自学python编程的方法路线

    怎么自学python编程 如何自学Python编程?一堆的Python教程却感觉无从下手呢?我想这应该是很多Python初学者正在纠结的问题. 今天想要分享给大家的是如何自学Python编程,学习这件 ...

  3. python编程300集免费-python 300本电子书合集

    链接: https://pan.baidu.com/s/1CNlB35ASnDNlUGNCZJbiAA 提取码: fxig Q群:592857363 更多所在 数据科学速查表 零起点Python机器学 ...

  4. python编程输入标准-揭秘python编程技巧

    揭秘python编程技巧 一.python的标准输入和输出[root@133 wc]# vim stdin.py #!/usr/bin/python #encoding:utf-8 import sy ...

  5. python编程入门-Python编程入门经典pdf(Python编程入门教程) 高清中文版

    Python编程入门经典pdf(Python编程入门教程)下载.Python编程入门经典pdf高清版帮助各位更好的进行Python编程的学习以及理解,最经典的课题,最深入的概念,让你在Python编程 ...

  6. python开发cs程序_CSE209代做、代写Computer Graphics、代做CS/python编程设计代写Python程序|代做Processing...

    CSE209代做.代写Computer Graphics.代做CS/python编程设计代写Python程序|代做ProcessingCSE209 Computer Graphics~1~CSE209 ...

  7. Python编程好学吗 为什么Python如此受欢迎

    Python编程好学吗?为什么Python如此受欢迎?Python的包装能力.可组合性.可嵌入性都很好,可以把各种复杂性包装在Python模块里,暴露出漂亮的接口.因此,Python自然是大受欢迎. ...

  8. 手机版python编程软件下载,手机python编程软件

    1.求 python 64位安装包下载 软件介绍: python是一款面向对象.解释型.动态数据类型的高级编程设计语言.它拥有语言上的简洁性.可读性和易维护性,在图形处理.数学处理.文本处理.系统编程 ...

  9. 树莓派python编程优点_树莓派为什么会使用python编程?为什么有时python运行效率不高?...

    在许多编程语言中,Python的语法也有很大不同.Python使用空格或缩进来分隔不同的代码块.C语言和其他语言使用花括号来区分不同的代码块,例如if语句,Python使用冒号和缩进来定义代码块.这也 ...

  10. python 编程一日一练-python每日一练

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 过滤掉列表中的负数 筛选出字典{lilei: 79,jim: 88,lu ...

最新文章

  1. 网站网页编写需要注意哪些问题?
  2. 当模板方法遇到了委托函数,你的代码又可以精简了
  3. 业界对物联网技术最常见的三大误区解读
  4. C 标准库 - string.h
  5. 51单片机怎么显示当前时间_51单片机玩转物联网基础篇06-LCD1602液晶显示器
  6. 软件_crontab任务配置失败原因总结和技巧
  7. MyEclipse 8.6.1下载|MyEclipse 8下载|MyEclipse 8.6.1官网下载
  8. 如果更快的访问ESS系统?
  9. Threejs导入OBJ模型出错的一些经验之谈
  10. Java开发手册之二方库依赖
  11. 转载HTML实体字符
  12. echart显示多组数据
  13. 使用FFMPEG解码和OpenAL播放音乐
  14. 58同城2014校园招聘笔试题
  15. centOS6.5中部署java调用h2o中python包环境
  16. jQuery拆分字符串 split()并且遍历$.each()
  17. 从渲染原理谈前端性能优化
  18. 【缅怀】缅怀汶川地震记
  19. excel 快捷换行,去除空白换行符
  20. Android 高质量开发之崩溃优化,2020-2021字节跳动Android面试真题解析

热门文章

  1. Nlpir大数据知识图谱的落地指南
  2. group by具有去重的功能
  3. Jewels and Stones
  4. 导入外部项目无法识别为Web项目无法部署到tomcat
  5. How to open robotium-solo-1.4.0 javadoc.jar to get the information of robotium.
  6. asp.net webform 与asp.net mvc 混合开发项目总结
  7. jQuery 参考手册 - 事件
  8. Java7/8 中的 HashMap 和 ConcurrentHashMap
  9. English trip M1 - AC6 How to make salad? Teacher:Patrick
  10. [剑指offer] 替换空格