python基礎高階用法
阿新 • • 發佈:2021-07-12
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