python ChainMap管理用法實(shí)例講解
說明
1、ChainMap的主要用例是提供一種有效的方法來管理多個(gè)范圍或上下文,并處理重復(fù)鍵的訪問優(yōu)先級。
2、當(dāng)有多個(gè)存儲(chǔ)重復(fù)鍵的字典訪問它們的順序時(shí),這個(gè)功能非常有用。
在ChainMap文檔中找到一個(gè)經(jīng)典的例子,它模擬Python如何分析不同命名空間中的變量名稱。
當(dāng)Python搜索名稱時(shí),它會(huì)依次搜索當(dāng)?shù)?、全局和?nèi)置的功能域,直到找到目標(biāo)名稱。Python作用域是將名稱映射到對象的字典。
為了模擬Python的內(nèi)部搜索鏈,可以使用鏈映射。
實(shí)例
>>> import builtins >>> # Shadow input with a global name >>> input = 42 >>> pylookup = ChainMap(locals(), globals(), vars(builtins)) >>> # Retrieve input from the global namespace >>> pylookup["input"] 42 >>> # Remove input from the global namespace >>> del globals()["input"] >>> # Retrieve input from the builtins namespace >>> pylookup["input"] <built-in function input>
知識點(diǎn)擴(kuò)展:
ChainMap類管理的是一個(gè)字典序列,并按其出現(xiàn)的順序搜索以查找與鍵關(guān)聯(lián)的值。ChainMap提供了一個(gè)很好的“上下文”容器,因此可以把它看成一個(gè)棧,棧增長時(shí)發(fā)生變更,棧收縮時(shí)這些變更被丟棄。
下面,我們來看看其基本的使用規(guī)則:
import collections
a = {"a": "A", "c": "c", }
b = {"b": "B", "c": "D", }
col = collections.ChainMap(a, b)
# 和普通字典一樣訪問
print(col["a"])
print(list(col.keys()), list(col.values()))
for key, value in col.items():
print(key, value)
可以看到,在相同的key值情況下,只有子映射a的值。這也就是說明ChainMap是按子映射傳遞到構(gòu)造函數(shù)的順序來搜索這些子映射。
以上就是python ChainMap管理用法實(shí)例講解的詳細(xì)內(nèi)容,更多關(guān)于python ChainMap的管理用法的資料請關(guān)注本站其它相關(guān)文章!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信