亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言

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

ChainMap

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

下面,我們來看看其基本的使用規(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)

運行之后,效果如下:

常規(guī)應用

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

重排列

其實,這種子映射的順序在maps屬性中,我們直接通過它增加新映射,或者改變映射的順序。比如上面映射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)

運行之后,效果如下:

重排列

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

更新值

ChainMap歸并子映射的值,應該如何更改呢?其實不管你是直接更新基本的子映射值,還是更新ChainMap對象的值。都會將子映射與ChainMap對象的值同時改變。

import collections

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

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

運行之后,效果如下:

值

那么如果保證不更改掉原理的底層的數(shù)據(jù)結構呢?答案是通過new_child()創(chuàng)建一個新的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)

運行之后,效果如下:

效果

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

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

相關文章

  • python操作CouchDB的方法

    python操作CouchDB的方法

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

    Python入門教程(二十)Python的Lambda表達式

    這篇文章主要介紹了Python入門教程(二十)Python的Lambda表達式,lambda表達式是一行的函數(shù)。它們在其他語言中也被稱為匿名函數(shù),lambda表達式非常有用,可以讓代碼簡單,簡潔,需要的朋友可以參考下
    2023-04-04
  • Python?TypeError:?‘float‘?object?is?not?subscriptable錯誤解決

    Python?TypeError:?‘float‘?object?is?not?subscriptable錯

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

    Python實現(xiàn)自動上京東搶手機

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

    pycharm指定python路徑過程詳解

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

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

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

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

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

    詳解Python遍歷字典的鍵和值

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

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

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

    python中常用檢測字符串相關函數(shù)匯總

    這篇文章主要介紹了python中常用檢測字符串相關函數(shù),實例匯總了Python針對字符串數(shù)字、字母、大小寫等常用檢測函數(shù),非常具有實用價值,需要的朋友可以參考下
    2015-04-04

最新評論