欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)字典序列ChainMap

 更新時(shí)間:2021年06月16日 16:26:57   作者:一天一篇Python庫(kù)  
容器數(shù)據(jù)類型包括數(shù)組list,字典dict以及元組tuple等。本篇主要介紹了ChainMap字典序列的使用,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

容器數(shù)據(jù)類型包括數(shù)組list,字典dict以及元組tuple等。本篇,將詳細(xì)介紹ChainMap字典序列的使用。

ChainMap

ChainMap類管理的是一個(gè)字典序列,并按其出現(xiàn)的順序搜索以查找與鍵關(guān)聯(lián)的值。ChainMap提供了一個(gè)很好的“上下文”容器,因此可以把它看成一個(gè)棧,棧增長(zhǎng)時(shí)發(fā)生變更,棧收縮時(shí)這些變更被丟棄。

下面,我們來(lái)看看其基本的使用規(guī)則:

import collections

a = {"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)

運(yùn)行之后,效果如下:

常規(guī)應(yīng)用

可以看到,在相同的key值情況下,只有子映射a的值。這也就是說(shuō)明ChainMap是按子映射傳遞到構(gòu)造函數(shù)的順序來(lái)搜索這些子映射。

重排列

其實(shí),這種子映射的順序在maps屬性中,我們直接通過(guò)它增加新映射,或者改變映射的順序。比如上面映射c是取的a字典中的值,那么我們直接顛倒順序,就可以取b的值。

import collections

a = {"a": "A", "c": "c", }
b = {"b": "B", "c": "D", }

col = collections.ChainMap(a, b)
#顛倒順序
col.maps = list(reversed(col.maps))

for key, value in col.items():
    print(key, value)

運(yùn)行之后,效果如下:

重排列

這里函數(shù)reversed()很好理解,就是顛倒英文的意思。

更新值

ChainMap歸并子映射的值,應(yīng)該如何更改呢?其實(shí)不管你是直接更新基本的子映射值,還是更新ChainMap對(duì)象的值。都會(huì)將子映射與ChainMap對(duì)象的值同時(shí)改變。

import collections

a = {"a": "A", "c": "c", }
b = {"b": "B", "c": "D", }

col = collections.ChainMap(a, b)
col['c'] = 'Z'
print(col['c'])
#變更回來(lái)
col['c'] = 'c'
a['c'] = 'Z'
print(col['c'])

運(yùn)行之后,效果如下:

值

那么如果保證不更改掉原理的底層的數(shù)據(jù)結(jié)構(gòu)呢?答案是通過(guò)new_child()創(chuàng)建一個(gè)新的ChainMap。具體代碼如下:

import collections

a = {"a": "A", "c": "c", }
b = {"b": "B", "c": "D", }

col = collections.ChainMap(a, b)
col2 = col.new_child()

print(col)
print(col2)
print("--------------------------")
col2['c'] = 'Z'
print(col)
print(col2)

運(yùn)行之后,效果如下:

效果

可以看到,new_child()提供了一個(gè)額外的映射在最前面。正是這種基于堆棧的思維,我們很容易在一次迭代中增加或更新值,然后在下一次迭代中丟棄這些改變。

到此這篇關(guān)于Python實(shí)現(xiàn)字典序列ChainMap的文章就介紹到這了,更多相關(guān)Python 字典序列ChainMap內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python操作CouchDB的方法

    python操作CouchDB的方法

    這篇文章主要介紹了python操作CouchDB的方法,包括了couchDb庫(kù)安裝、連接服務(wù)器、創(chuàng)建數(shù)據(jù)庫(kù)、查詢數(shù)據(jù)庫(kù)、遍歷數(shù)據(jù)庫(kù)等常用的操作,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • Python入門(mén)教程(二十)Python的Lambda表達(dá)式

    Python入門(mén)教程(二十)Python的Lambda表達(dá)式

    這篇文章主要介紹了Python入門(mén)教程(二十)Python的Lambda表達(dá)式,lambda表達(dá)式是一行的函數(shù)。它們?cè)谄渌Z(yǔ)言中也被稱為匿名函數(shù),lambda表達(dá)式非常有用,可以讓代碼簡(jiǎn)單,簡(jiǎn)潔,需要的朋友可以參考下
    2023-04-04
  • Python?TypeError:?‘float‘?object?is?not?subscriptable錯(cuò)誤解決

    Python?TypeError:?‘float‘?object?is?not?subscriptable錯(cuò)

    發(fā)現(xiàn)問(wèn)題寫(xiě)python的時(shí)候出現(xiàn)了這個(gè)錯(cuò),所以想著給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于Python?TypeError:?‘float‘?object?is?not?subscriptable錯(cuò)誤的解決辦法,需要的朋友可以參考下
    2022-12-12
  • Python實(shí)現(xiàn)自動(dòng)上京東搶手機(jī)

    Python實(shí)現(xiàn)自動(dòng)上京東搶手機(jī)

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)自動(dòng)上京東搶手機(jī)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • pycharm指定python路徑過(guò)程詳解

    pycharm指定python路徑過(guò)程詳解

    這篇文章主要介紹了Pycharm指定python路徑過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 使用python生成楊輝三角形的示例代碼

    使用python生成楊輝三角形的示例代碼

    這篇文章主要介紹了使用python生成楊輝三角形的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • ubuntu系統(tǒng)如何從python3.7升級(jí)到python3.8

    ubuntu系統(tǒng)如何從python3.7升級(jí)到python3.8

    這篇文章主要給大家介紹了關(guān)于ubuntu系統(tǒng)如何從python3.7升級(jí)到python3.8的相關(guān)資料,Python是一種廣泛使用的編程語(yǔ)言,而Ubuntu是一個(gè)流行的開(kāi)源操作系統(tǒng),通過(guò)升級(jí)Python您可以獲得新功能、性能改進(jìn)和安全修復(fù),需要的朋友可以參考下
    2023-11-11
  • 詳解Python遍歷字典的鍵和值

    詳解Python遍歷字典的鍵和值

    這篇文章主要通過(guò)一些簡(jiǎn)單的示例為大家介紹一下Python中遍歷字典的鍵和值的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • Django集成百度富文本編輯器uEditor攻略

    Django集成百度富文本編輯器uEditor攻略

    UEditor是由百度web前端研發(fā)部開(kāi)發(fā)所見(jiàn)即所得富文本web編輯器,具有輕量,可定制,注重用戶體驗(yàn)等特點(diǎn),開(kāi)源基于MIT協(xié)議,允許自由使用和修改代碼。
    2014-07-07
  • python中常用檢測(cè)字符串相關(guān)函數(shù)匯總

    python中常用檢測(cè)字符串相關(guān)函數(shù)匯總

    這篇文章主要介紹了python中常用檢測(cè)字符串相關(guān)函數(shù),實(shí)例匯總了Python針對(duì)字符串?dāng)?shù)字、字母、大小寫(xiě)等常用檢測(cè)函數(shù),非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04

最新評(píng)論