0.摘要
當我們處理多個字典(或稱為對映,因為字典是python中唯一的對映結構),可以通過將多個字典合併為乙個字典的方式實現批量處理。
1.chainmap類
a =
b =
from collections import chainmap
c = chainmap(a,b)
print(c['x']) # outputs 1 (from a)
print(c['y']) # outputs 2 (from b)
print(c['z']) # outputs 3 (from a)
print('len(c):', len(c)) #len(c): 3
print('c.keys():', list(c.keys())) #c.keys(): ['x', 'y', 'z']
print('c.values():', list(c.values())) #c.values(): [1, 2, 3]
collections.chainmap類能夠將多個對映在邏輯表現上組合為乙個單獨的對映,但只是維護了乙個記錄低層對映關係的列表,這多個對映並不會真正合併。
對於重複的鍵採用第乙個對映中的值,但是修改對映的操作也只會作用在第乙個對映上。
c['z'] = 10
c['w'] = 40
del c['x']
print("a:", a) #a:
另外,chainmap還而已建立子類:
values = chainmap()
values['x'] = 1
print(values) #result:chainmap()
values = values.new_child()
values['x'] = 2
print(values) #result:chainmap(, )
values = values.new_child()
values['x'] = 3
print(values) #result:chainmap(, , )
print(values['x']) #3
values = values.parents
print(values['x']) #2
values = values.parents
print(values['x']) #1
2.優勢
我們知道,字典可以通過.update()方法進行合併,但這會構建出乙個新的字典。並且,原始字典的資料更新夠,新字典中的資料不會隨之更新。
Python 多個字典組合成單個字典
多個字典或對映,希望在邏輯上將它們組合成單個對映以執行某些操作,例如查詢值或檢查鍵是否存在。假如現在有兩個字典物件a,b。a b 假如現在要檢查某一鍵是否在其中乙個字典物件中存在。首先檢查a,若a中不存在,則檢查b。可以使用collections模組的chainmap類,如下 from collec...
Python 多個字典組合成單個字典
多個字典或對映,希望在邏輯上將它們組合成單個對映以執行某些操作,例如查詢值或檢查鍵是否存在。假如現在有兩個字典物件a,b。a b 假如現在要檢查某一鍵是否在其中乙個字典物件中存在。首先檢查a,若a中不存在,則檢查b。可以使用collections模組的chainmap類,如下 from collec...
python之合併多個字典或對映
現在有多個字典或者對映,你想將它們從邏輯上合併為乙個單一的對映後執行某些操作,比如查詢值或者檢查某些鍵是否存在。假如你有如下兩個字典 a b 不改變原字典,新建c合併後的字典 c dict a c.update b print c 更新原字典,更新的內容會覆蓋老的內容 a.update b prin...