溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python中ChainMap是什么意思

發(fā)布時(shí)間:2021-09-07 11:33:49 來(lái)源:億速云 閱讀:133 作者:小新 欄目:編程語(yǔ)言

這篇文章將為大家詳細(xì)講解有關(guān)python中ChainMap是什么意思,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

概念

1、ChainMap在collections中加入Python3.3作為一個(gè)方便的工具范圍和環(huán)境進(jìn)行管理。

可以把多個(gè)字典和其他映射結(jié)合起來(lái),使它們?cè)谶壿嬌巷@示并表現(xiàn)為一個(gè)整體。它創(chuàng)建了一個(gè)單一的可更新視圖,其工作模式類(lèi)似于常規(guī)字典,但有一些內(nèi)部差異。

2、ChainMap不會(huì)合并它的映射。相反,它們被保存在內(nèi)部映射列表中。

ChainMap在列表頂部重新實(shí)現(xiàn)常見(jiàn)的字典操作。因?yàn)閮?nèi)部列表保存引用原始輸入映射,這些映射中的任何變化都會(huì)影響整個(gè)chainMap對(duì)象。

將輸入映射存儲(chǔ)在列表中,允許您在給定的鏈映射中有重復(fù)鍵。如果您查找執(zhí)行鍵,ChainMap搜索映射列表,直到您找到第一個(gè)目標(biāo)鍵。如果鑰匙丟失,你會(huì)像往常一樣得到一個(gè)。

當(dāng)需要管理嵌套作用域時(shí),將映射存儲(chǔ)在列表中將真正發(fā)揮作用,每個(gè)映射代表一個(gè)特定的作用域或上下文。

為了更好地理解功能域和上下文的含義,請(qǐng)考慮Python如何分析名稱。當(dāng)Python搜索名稱時(shí),它會(huì)在locals()、globals()和中搜索,最后builtins直到找到第一個(gè)目標(biāo)名稱。如果名字不存在,你會(huì)得到一個(gè)NameError.處理范圍和上下文是你能解決的最常見(jiàn)的問(wèn)題。

在使用ChainMap時(shí),您可以使用不相交或相交的鍵鏈接多個(gè)字典。

首先,ChainMap允許你把所有的字典都當(dāng)成一個(gè)。所以你可以像使用單個(gè)字典一樣訪問(wèn)鍵值對(duì)。在第二種情況下,除了管理字典之外,您還可以使用內(nèi)部映射列表為字典中的重復(fù)鍵來(lái)定義某種訪問(wèn)優(yōu)先級(jí)。因此,ChainMap對(duì)象非常適合處理多個(gè)上下文。

ChainMap是一種奇怪的行為,它是一種突變,比如更新,添加,刪除,清除和彈出鍵,它只作用于內(nèi)部映射列表中的第一個(gè)映射。

ChainMap的主要功能:

從多個(gè)輸入映射構(gòu)建可更新的視圖。

提供和字典差不多的界面,但是有一些額外的功能。

不合并輸入映射,而是保存在內(nèi)部公共列表中。

查看輸入映射的外部變化。

可包含不同值的重復(fù)鍵。

按順序搜索內(nèi)部映射列表搜索鍵。

KeyErrror在搜索整個(gè)映射列表后缺少鍵時(shí)拋出a。

只改變內(nèi)部列表中的第一個(gè)映射。

關(guān)于“python中ChainMap是什么意思”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI