python ChainMap管理用法實(shí)例講解
1、ChainMap的主要用例是提供一種有效的方法來(lái)管理多個(gè)范圍或上下文,并處理重復(fù)鍵的訪問(wèn)優(yōu)先級(jí)。
2、當(dāng)有多個(gè)存儲(chǔ)重復(fù)鍵的字典訪問(wèn)它們的順序時(shí),這個(gè)功能非常有用。
在ChainMap文檔中找到一個(gè)經(jīng)典的例子,它模擬Python如何分析不同命名空間中的變量名稱(chēng)。
當(dāng)Python搜索名稱(chēng)時(shí),它會(huì)依次搜索當(dāng)?shù)亍⑷趾蛢?nèi)置的功能域,直到找到目標(biāo)名稱(chēng)。Python作用域是將名稱(chēng)映射到對(duì)象的字典。
為了模擬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>
知識(shí)點(diǎn)擴(kuò)展:
ChainMap類(lèi)管理的是一個(gè)字典序列,并按其出現(xiàn)的順序搜索以查找與鍵關(guān)聯(lián)的值。ChainMap提供了一個(gè)很好的“上下文”容器,因此可以把它看成一個(gè)棧,棧增長(zhǎng)時(shí)發(fā)生變更,棧收縮時(shí)這些變更被丟棄。
下面,我們來(lái)看看其基本的使用規(guī)則:
import collectionsa = {'a': 'A', 'c': 'c', }b = {'b': 'B', 'c': 'D', }col = collections.ChainMap(a, b)# 和普通字典一樣訪問(wèn)print(col['a'])print(list(col.keys()), list(col.values()))for key, value in col.items(): print(key, value)
可以看到,在相同的key值情況下,只有子映射a的值。這也就是說(shuō)明ChainMap是按子映射傳遞到構(gòu)造函數(shù)的順序來(lái)搜索這些子映射。
以上就是python ChainMap管理用法實(shí)例講解的詳細(xì)內(nèi)容,更多關(guān)于python ChainMap的管理用法的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. ASP基礎(chǔ)入門(mén)第二篇(ASP基礎(chǔ)知識(shí))2. ASP.NET MVC限制同一個(gè)IP地址單位時(shí)間間隔內(nèi)的請(qǐng)求次數(shù)3. Python使用oslo.vmware管理ESXI虛擬機(jī)的示例參考4. ThinkPHP6使用JWT+中間件實(shí)現(xiàn)Token驗(yàn)證實(shí)例詳解5. 不使用XMLHttpRequest對(duì)象實(shí)現(xiàn)Ajax效果的方法小結(jié)6. python 定義函數(shù) 返回值只取其中一個(gè)的實(shí)現(xiàn)7. 怎樣打開(kāi)XML文件?xml文件如何打開(kāi)?8. TP5使用RabbitMQ實(shí)現(xiàn)消息隊(duì)列的項(xiàng)目實(shí)踐9. Python如何解決secure_filename對(duì)中文不支持問(wèn)題10. JSP出現(xiàn)中文亂碼問(wèn)題解決方法詳解
