python基础高级用法
作者:互联网
1.ChainMap
- 当我们有2个字段
o1
和o2
你想将它们从合并后进行查找操作(比如先从o1
找,如果o1
找不到,再去o2
找),如下:
from collections import ChainMap
o1 = {"a": 1, "c": 10}
o2 = {"b": 5, "c": 4}
o3 = ChainMap(o1, o2)
print(o3) # ChainMap({'a': 1, 'c': 10}, {'b': 5, 'c': 4})
print(o3["a"])
print(o3["b"])
print(o3["c"])
# 如果查寻一个不存在的key通过[]会报错,我们可以通过get方式更缓和一点
print(o3.get("d")) # None
- 当然
o3
也具备字典的特性,我们通过删除,更新,添加操作总是优先影响第一个字典
# 更新
o3["c"] = 100
print(o3)# ChainMap({'a': 1, 'c': 100}, {'b': 5, 'c': 4})
print(o1) # {'a': 1, 'c': 100}
# 删除
del o3["c"]
print(o3)# ChainMap({'a': 1}, {'b': 5, 'c': 4})
# 新增
o3["d"] = 20
print(o3)# ChainMap({'a': 1, 'd': 20}, {'b': 5, 'c': 4})
- 作为范围变量用法
values = ChainMap()
values["x"] = 1
# 新建一个空的映射对象
values = values.new_child()
values["x"] = 2
values = values.new_child()
values["x"] = 3
print(values) # ChainMap({'x': 3}, {'x': 2}, {'x': 1})
print(values["x"]) # 3
# 类似列表中取 [1:]切片
values = values.parents
print(values)# ChainMap({'x': 2}, {'x': 1})
print(values["x"])# 2
values = values.parents
print(values["x"]) # 1
标签:python,高级,用法,values,print,o3,o2,o1,ChainMap 来源: https://www.cnblogs.com/xujunkai/p/15003804.html