Python每日一練0013

2021-08-18 07:46:39 字數 1370 閱讀 5784

現在有多個字典或者對映,你想將它們從邏輯上合併為乙個單一的對映後執行某些操作, 比如查詢值或者檢查某些鍵是否存在。

使用collections庫的chainmap類,可以快速的將多個dict合併在一起

>>> 

from collections import chainmap

>>> a =

>>> b =

>>> c = chainmap(a, b)

>>> print(c['x'])

1>>> print(c['y'])

2>>> print(c['z'])

3

chainmap可以將多個dict合併在一起,當做乙個整體來處理,並且它比建立乙個新的dict或者使用dict.update()速度要快

chainmap的底層實現是將合併的字典存到乙個list當中,這個list我們可以通過訪問maps成員得到

>>> 

from collections import chainmap

>>> a =

>>> b =

>>> c = chainmap(a, b)

>>> print(c.maps)

[, ]

對於查詢操作,chainmap會掃瞄這個list,直到找到key存在然後返回,所以上面的例子,我們的c['z']得到的是3

而對於增加和刪除操作,chainmap只會操作list中的第乙個dict

另外一點需要注意的是,chainmap是按引用儲存的,意思是如果我們修改了原來的dict,這個修改是會被反射到chainmap裡,舉個例子:

>>> 

from collections import chainmap

>>> a =

>>> b =

>>> c = chainmap(a, b)

>>> print(c['x'])

1>>> a['x'] = 66

>>> print(c['x'])

關於chainmap更詳細的介紹可以參考:

python cookbook

Python每日一練0013

現在有多個字典或者對映,你想將它們從邏輯上合併為乙個單一的對映後執行某些操作,比如查詢值或者檢查某些鍵是否存在。使用collections庫的chainmap類,可以快速的將多個dict合併在一起 from collections import chainmap a b c chainmap a,b...

python每日一練

人生苦短,我用python 2018.6.5 有個目錄,裡面是你自己寫過的程式,統計一下你寫過多少行 包括空行和注釋,但是要分別列出來 coding utf 8 import re import glob defcodecolletion path filelist glob.glob path p...

Python每日一練

人生苦短,我用python 2018.6.13 最近事情有點多,有幾天沒寫了,正好最近需要統計一下各組排名,也就拿python代替手工了 各組給出其他組的排名,統計每個組最終的得分,第一名為0.5,第二名0.4,以此類推。coding utf 8 groups 3,2,5,4,6 1,3,5,6,4...