Python每日一练0013

发布时间:2019-06-22 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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'])

关于ChainMap更详细的介绍可以参考:https://docs.python.org/3/lib...

Python CookBook

关注

欢迎关注我的微信公众号python每日一练

Python每日一练0013

脚本宝典总结

以上是脚本宝典为你收集整理的Python每日一练0013全部内容,希望文章能够帮你解决Python每日一练0013所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。