您好,登录后才能下订单哦!
本篇文章为大家展示了ChainMap怎么在python项目中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
初步使用
from collections import ChainMap a = {"x":1, "z":3} b = {"y":2, "z":4} c = ChainMap(a,b) print(c) print("x: {}, y: {}, z: {}".format(c["x"], c["y"], c["z"]))
输出:
ChainMap({'x': 1, 'z': 3}, {'y': 2, 'z': 4})
x: 1, y: 2, z: 3
[Finished in 0.1s]
这是ChainMap最基本的使用,可以用来合并两个或者更多个字典,当查询的时候,从前往后依次查询。
有一个注意点就是当对ChainMap进行修改的时候总是只会对第一个字典进行修改
In [6]: a = {"x":1, "z":3} In [7]: b = {"y":2, "z":4} In [8]: c = ChainMap(a, b) In [9]: c Out[9]: ChainMap({'z': 3, 'x': 1}, {'z': 4, 'y': 2}) In [10]: c["z"] Out[10]: 3 In [11]: c["z"] = 4 In [12]: c Out[12]: ChainMap({'z': 4, 'x': 1}, {'z': 4, 'y': 2}) In [13]: c.pop('z') Out[13]: 4 In [14]: c Out[14]: ChainMap({'x': 1}, {'z': 4, 'y': 2}) In [15]: del c["y"] --------------------------------------------------------------------------- KeyError Traceback (most recent call last) 。。。。。。 KeyError: "Key not found in the first mapping: 'y'"
ChainMap和带有作用域的值,诸如全局变量,局部变量之间工作的时候特别有效,
In [4]: a = ChainMap() In [5]: a["x"]=1 In [6]: a Out[6]: ChainMap({'x': 1}) In [7]: b = a.new_child() In [8]: b Out[8]: ChainMap({}, {'x': 1}) In [9]: b["x"] = 2 In [10]: b Out[10]: ChainMap({'x': 2}, {'x': 1}) In [11]: b["y"] = 3 In [12]: b Out[12]: ChainMap({'x': 2, 'y': 3}, {'x': 1}) In [13]: a Out[13]: ChainMap({'x': 1}) In [14]: c = a.new_child() In [15]: c Out[15]: ChainMap({}, {'x': 1}) In [16]: c["x"] Out[16]: 1 In [17]: c["y"] = 1 In [18]: c Out[18]: ChainMap({'y': 1}, {'x': 1}) In [19]: d = c.parents() --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-19-dc4debb7ca3b> in <module>() ----> 1 d = c.parents() TypeError: 'ChainMap' object is not callable In [20]: d = c.parents In [21]: d Out[21]: ChainMap({'x': 1}) In [22]: d is a Out[22]: False In [23]: d == a Out[23]: True
从原理上面讲,ChainMap实际上是把放入的字典存储在一个队列中,当进行字典的增加删除等操作只会在第一个字典上进行,当进行查找的时候会依次查找,new_child()方法实质上是在列表的第一个元素前放入一个字典,默认是{},而parents是去掉了列表开头的元素
In [24]: a = {"x":1, "z":3} In [25]: b = {"y":2, "z":4} In [26]: c = ChainMap(a,b) In [27]: c Out[27]: ChainMap({'x': 1, 'z': 3}, {'y': 2, 'z': 4}) In [28]: c.maps Out[28]: [{'x': 1, 'z': 3}, {'y': 2, 'z': 4}] In [29]: c.parents Out[29]: ChainMap({'y': 2, 'z': 4}) In [30]: c.parents.maps Out[30]: [{'y': 2, 'z': 4}] In [31]: c.parents.parents Out[31]: ChainMap({}) In [32]: c.parents.parents.parents Out[32]: ChainMap({})
上述内容就是ChainMap怎么在python项目中使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。