国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)將多個(gè)映射合并為單個(gè)映射的方法

2020-02-22 23:44:10
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Python將多個(gè)映射合并為單個(gè)映射的方法。分享給大家供大家參考,具體如下:

問(wèn)題:在邏輯上將多個(gè)字典或映射合并為一個(gè)單獨(dú)的映射結(jié)構(gòu),以此執(zhí)行某些特定的操作,比如查找值或者檢查鍵是否存在

解決方案:利用collections模塊中的ChainMap

ChainMap可接受多個(gè)映射然后在邏輯上使它們表現(xiàn)為一個(gè)單獨(dú)的映射結(jié)構(gòu)。這些映射在字面上并不會(huì)合并在一起。相反,ChainMap只是簡(jiǎn)單地維護(hù)一個(gè)記錄底層映射關(guān)系的列表,然后重定義常見(jiàn)的字典操作來(lái)掃描這個(gè)列表。

# example.py## Example of combining dicts into a chainmapa = {'x': 1, 'z': 3 }b = {'y': 2, 'z': 4 }# (a) Simple example of combiningfrom collections import ChainMapc = ChainMap(a,b) #如果有重復(fù)的鍵,那么會(huì)采用第一個(gè)映射中所對(duì)應(yīng)的值。print(c['x'])   # Outputs 1 (from a)print(c['y'])   # Outputs 2 (from b)print(c['z'])   # Outputs 3 (from a)# Output some common valuesprint('len(c):', len(c))print('c.keys():', list(c.keys()))print('c.values():', list(c.values()))# Modify some valuesc['z'] = 10c['w'] = 40print("a:", a)del c['x']print("a:", a)# Example of stacking mappings (like scopes)values = ChainMap()values['x'] = 1# Add a new mappingvalues = values.new_child()values['x'] = 2# Add a new mappingvalues = values.new_child()values['x'] = 3print(values)print(values['x'])# Discard last mappingvalues = values.parentsprint(values)print(values['x'])# Discard last mappingvalues = values.parentsprint(values)print(values['x'])
>>> ================================ RESTART ================================>>>123len(c): 3c.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})3ChainMap({'x': 2}, {'x': 1})2ChainMap({'x': 1})1>>>

另外ChainMap操作的是原始字典,可以避免一些令人不悅的行為,例如其中任何一個(gè)原始字典的修改無(wú)法反應(yīng)到合并后的字典中。

>>> a={'x':1,'z':3}>>> b={'y':2,'z':4}>>> merged=ChainMap(a,b)>>> mergedChainMap({'x': 1, 'z': 3}, {'y': 2, 'z': 4})>>> merged['x']1>>> a['x']=55>>> merged['x']55>>> mergedChainMap({'x': 55, 'z': 3}, {'y': 2, 'z': 4})>>>

(代碼摘自《Python Cookbook》)

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 广汉市| 江安县| 大冶市| 米林县| 东港市| 冕宁县| 河池市| 巩留县| 新乡市| 紫云| 五峰| 榆社县| 视频| 铁岭县| 镇原县| 大姚县| 洛阳市| 新巴尔虎右旗| 克拉玛依市| 金坛市| 永靖县| 紫云| 积石山| 黄大仙区| 阳泉市| 全南县| 辰溪县| 陇西县| 瑞丽市| 大足县| 田林县| 西乌珠穆沁旗| 婺源县| 新蔡县| 东乡| 馆陶县| 奉化市| 枝江市| 商水县| 德清县| 棋牌|