您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“python ChainMap怎么使用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“python ChainMap怎么使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
chainMap是邏輯上合并兩個字典為一個邏輯單元,合并后的結構實際上是一個列表,只是邏輯上是仍然為一個字典(并未生成新的),對此列表的操作模擬了各種字典的操作。合并后的取值及操作仍然是對原始字典的操作。
相同的key值合并后取第一個字典里的值作為重復key的值,
from collections import ChainMap dict1={"x":1,"y":3,"t":12} dict2={"x":5,"z":3} chain_dict=ChainMap(dict1,dict2) #相同的key值合并后取第一個dict里的值作為重復key的值 print(chain_dict["x"]) print(chain_dict["z"])
結果:
1
3
對chain_dict的增刪改查影響的都是第一個字典
from collections import ChainMap dict1={"x":1,"y":3,"t":12} dict2={"x":5,"z":3} chain_dict=ChainMap(dict1,dict2) #對chain_dict的增刪改查影響的都是dict1 chain_dict["a"]=10 print(dict1) chain_dict["x"]=100 print(dict1) del dict1["t"] print(dict1) print(dict2)
結果:
{'x': 1, 'y': 3, 't': 12, 'a': 10}
{'x': 100, 'y': 3, 't': 12, 'a': 10}
{'x': 100, 'y': 3, 'a': 10}
{'x': 5, 'z': 3}
maps屬性可輸出所以合并的字典
from collections import ChainMap dict1={"x":1,"y":3,"t":12} dict2={"x":5,"z":3} chain_dict=ChainMap(dict1,dict2) print(chain_dict.maps)
結果:
[{'x': 1, 'y': 3, 't': 12}, {'x': 5, 'z': 3}]
new_child()方法是在合并后的映射列表頭部位置插入空映射{}
from collections import ChainMap dict1={"x":1,"y":3,"t":12} dict2={"x":5,"z":3} chain_dict=ChainMap(dict1,dict2) print(chain_dict.maps) a=chain_dict.new_child() print(a) print(a.maps)
結果:
[{'x': 1, 'y': 3, 't': 12}, {'x': 5, 'z': 3}]
ChainMap({}, {'x': 1, 'y': 3, 't': 12}, {'x': 5, 'z': 3})
[{}, {'x': 1, 'y': 3, 't': 12}, {'x': 5, 'z': 3}]
new_child()可以衍生出parent()方法的使用,parent()其實是在合并后的映射列表去掉頭部位置第一個映射后的結果:
from collections import ChainMap dict1={"x":1,"y":3,"t":12} dict2={"x":5,"z":3} chain_dict=ChainMap(dict1,dict2) print(chain_dict.maps) a=chain_dict.new_child() print(a) print(a.maps) b=a.parents print("b=",b) bb=b.parents print("bb=",bb)
結果:
[{'x': 1, 'y': 3, 't': 12}, {'x': 5, 'z': 3}]
ChainMap({}, {'x': 1, 'y': 3, 't': 12}, {'x': 5, 'z': 3})
[{}, {'x': 1, 'y': 3, 't': 12}, {'x': 5, 'z': 3}]
b= ChainMap({'x': 1, 'y': 3, 't': 12}, {'x': 5, 'z': 3})
bb= ChainMap({'x': 5, 'z': 3})
1,查找鏈
import builtins pylookup = ChainMap(locals(), globals(), vars(builtins))
2,作用域
比如用戶指定的命令行參數優先于環境變量的示例,而環境變量優先于默認值:
import os, argparse defaults = {'color': 'red', 'user': 'guest'} parser = argparse.ArgumentParser() parser.add_argument('-u', '--user') parser.add_argument('-c', '--color') namespace = parser.parse_args() command_line_args = {k:v for k, v in vars(namespace).items() if v} combined = ChainMap(command_line_args, os.environ, defaults) print(combined['color']) print(combined['user'])
讀到這里,這篇“python ChainMap怎么使用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。