Python cookbook(資料結構與演算法)將多個映射合併為單一映射

不言
發布: 2018-04-19 13:45:38
原創
1528 人瀏覽過

這篇文章主要介紹了Python cookbook(資料結構與演算法)將多個映射合併為單一映射的方法,結合實例形式分析了Python字典映射合併操作相關實現技巧,需要的朋友可以參考下

本文實例講述了Python將多個映射合併為單一映射的方法。分享給大家供大家參考,具體如下:

問題:在邏輯上將多個字典或映射合併為一個單獨的映射結構,以此執行某些特定的操作,例如尋找值或檢查鍵是否存在

解決方案:利用collections模組中的ChainMap類別

ChainMap可接受多個映射然後在邏輯上使它們表現為一個單獨的映射結構。這些映射在字面上並不會合併在一起。相反,ChainMap只是簡單地維護一個記錄底層映射關係的列表,然後重定義常見的字典操作來掃描這個列表。

# example.py
#
# Example of combining dicts into a chainmap
a = {'x': 1, 'z': 3 }
b = {'y': 2, 'z': 4 }
# (a) Simple example of combining
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)
# Output some common values
print('len(c):', len(c))
print('c.keys():', list(c.keys()))
print('c.values():', list(c.values()))
# Modify some values
c['z'] = 10
c['w'] = 40
print("a:", a)
del c['x']
print("a:", a)
# Example of stacking mappings (like scopes)
values = ChainMap()
values['x'] = 1
# Add a new mapping
values = values.new_child()
values['x'] = 2
# Add a new mapping
values = values.new_child()
values['x'] = 3
print(values)
print(values['x'])
# Discard last mapping
values = values.parents
print(values)
print(values['x'])
# Discard last mapping
values = values.parents
print(values)
print(values['x'])
登入後複製

>>> ================================ RESTART ================================
>>>
1
2
3
len(c): 3
c.keys(): ['y', 'x', 'z']
c.values(): [2, 1, 3]
a: {'x': 1, 'z': 10, 'w': 40}
a: {'z': 10, 'w': 40}
ChainMap({'x': 3}, {'x': 2}, {'x': 1})
3
ChainMap({'x': 2}, {'x': 1})
2
ChainMap({'x': 1})
1
>>>
登入後複製

#另外ChainMap操作的是原始字典,可以避免一些令人不悅的行為,例如其中任何一個原始字典的修改無法反應到合併後的字典。

>>> a={'x':1,'z':3}
>>> b={'y':2,'z':4}
>>> merged=ChainMap(a,b)
>>> merged
ChainMap({'x': 1, 'z': 3}, {'y': 2, 'z': 4})
>>> merged['x']
1
>>> a['x']=55
>>> merged['x']
55
>>> merged
ChainMap({'x': 55, 'z': 3}, {'y': 2, 'z': 4})
>>>
登入後複製

(程式碼摘自《Python Cookbook》)

相關推薦:

Python cookbook(字串與文字)針對任意多的分隔符號拆分字串操作

#

以上是Python cookbook(資料結構與演算法)將多個映射合併為單一映射的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!