python如何將多個映射合并為一個映射
python多個映射合并為一個映射
我們有時需要將多個字典合并成一個單獨的映射結(jié)構(gòu),但不同的字典之間可能有相同的鍵,又不想將鍵覆蓋掉,于是可以使用ChainMap類來實現(xiàn)。
它在邏輯上將不同的字典合并為一個單獨的映射結(jié)構(gòu)。
from pprint import pprint from collections import ChainMap a = {'x': 1, 'y': 2, 'z': 3} b = {'y': 4, 'z': 5, 'm': 6, 'n': 8} c = {'m': 6, 'n': 10, 'a': 7, 'b': 0, 'c': 9} d = ChainMap(a, b, c) pprint(d)
輸出結(jié)果
ChainMap({'x': 1, 'y': 2, 'z': 3},
{'m': 6, 'n': 8, 'y': 4, 'z': 5},
{'a': 7, 'b': 0, 'c': 9, 'm': 6, 'n': 10})
ChainMap接受多個映射然后在邏輯上表現(xiàn)為一個單獨的映射。但是,這些字典并不會在事實上合并在一起。
ChainMap只是簡單地維護一個記錄底層映射關系的列表,然后重新定義常見的字典操作來掃描這個列表。
print(list(d.keys())) print(list(d.values()))
每次運行輸出的序列的值的順序都不相同
['x', 'n', 'a', 'm', 'y', 'b', 'c', 'z']
[1, 8, 7, 6, 2, 0, 9, 3]
.
.
.
['a', 'x', 'm', 'y', 'n', 'z', 'b', 'c']
[7, 1, 6, 2, 8, 3, 0, 9]
如果有重復的鍵,那么會輸出第一個查到的鍵。
print(d['n']) 8
python合并多個字典或者映射
python 中很多時候會用到合并多個字典
首先我們介紹一個collections模塊中的ChairMap類
from collections import ChainMap a = {'x': 1, 'z': 3 } b = {'y': 2, 'z': 4 } c = ChainMap(a,b)
如果模塊中的鍵是相同的 會返回第一個值 , 因為是映射 ,所以對它的操作都會對原數(shù)組有操作。
如果不想改變原來數(shù)組可以使用python 中的update()
a = {'x': 1, 'z': 3 } b = {'y': 2, 'z': 4 } merged = dict(b) merged.update(a)
它需要你創(chuàng)建一個完全不同的字典對象(或者是破壞現(xiàn)有字典結(jié)構(gòu))。 同時,如果原字典做了更新,這種改變不會反應到新的合并字典中去。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
windows下Python安裝、使用教程和Notepad++的使用教程
這篇文章主要介紹了windows下Python安裝、使用教程和Notepad++的使用教程,需要的朋友可以參考下2019-10-10

python數(shù)據(jù)分析基礎知識之shape()函數(shù)的使用教程

Windows系統(tǒng)下PhantomJS的安裝和基本用法