电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Python實(shí)現(xiàn)字典序列ChainMap

瀏覽:2日期:2022-06-16 14:32:58
目錄前言ChainMap重排列更新值前言

容器數(shù)據(jù)類型包括數(shù)組list,字典dict以及元組tuple等。本篇,將詳細(xì)介紹ChainMap字典序列的使用。

ChainMap

ChainMap類管理的是一個(gè)字典序列,并按其出現(xiàn)的順序搜索以查找與鍵關(guān)聯(lián)的值。ChainMap提供了一個(gè)很好的“上下文”容器,因此可以把它看成一個(gè)棧,棧增長時(shí)發(fā)生變更,棧收縮時(shí)這些變更被丟棄。

下面,我們來看看其基本的使用規(guī)則:

import collectionsa = {'a': 'A', 'c': 'c', }b = {'b': 'B', 'c': 'D', }col = collections.ChainMap(a, b)# 和普通字典一樣訪問print(col['a'])print(list(col.keys()), list(col.values()))for key, value in col.items(): print(key, value)

運(yùn)行之后,效果如下:

Python實(shí)現(xiàn)字典序列ChainMap

可以看到,在相同的key值情況下,只有子映射a的值。這也就是說明ChainMap是按子映射傳遞到構(gòu)造函數(shù)的順序來搜索這些子映射。

重排列

其實(shí),這種子映射的順序在maps屬性中,我們直接通過它增加新映射,或者改變映射的順序。比如上面映射c是取的a字典中的值,那么我們直接顛倒順序,就可以取b的值。

import collectionsa = {'a': 'A', 'c': 'c', }b = {'b': 'B', 'c': 'D', }col = collections.ChainMap(a, b)#顛倒順序col.maps = list(reversed(col.maps))for key, value in col.items(): print(key, value)

運(yùn)行之后,效果如下:

Python實(shí)現(xiàn)字典序列ChainMap

這里函數(shù)reversed()很好理解,就是顛倒英文的意思。

更新值

ChainMap歸并子映射的值,應(yīng)該如何更改呢?其實(shí)不管你是直接更新基本的子映射值,還是更新ChainMap對象的值。都會(huì)將子映射與ChainMap對象的值同時(shí)改變。

import collectionsa = {'a': 'A', 'c': 'c', }b = {'b': 'B', 'c': 'D', }col = collections.ChainMap(a, b)col[’c’] = ’Z’print(col[’c’])#變更回來col[’c’] = ’c’a[’c’] = ’Z’print(col[’c’])

運(yùn)行之后,效果如下:

Python實(shí)現(xiàn)字典序列ChainMap

那么如果保證不更改掉原理的底層的數(shù)據(jù)結(jié)構(gòu)呢?答案是通過new_child()創(chuàng)建一個(gè)新的ChainMap。具體代碼如下:

import collectionsa = {'a': 'A', 'c': 'c', }b = {'b': 'B', 'c': 'D', }col = collections.ChainMap(a, b)col2 = col.new_child()print(col)print(col2)print('--------------------------')col2[’c’] = ’Z’print(col)print(col2)

運(yùn)行之后,效果如下:

Python實(shí)現(xiàn)字典序列ChainMap

可以看到,new_child()提供了一個(gè)額外的映射在最前面。正是這種基于堆棧的思維,我們很容易在一次迭代中增加或更新值,然后在下一次迭代中丟棄這些改變。

到此這篇關(guān)于Python實(shí)現(xiàn)字典序列ChainMap的文章就介紹到這了,更多相關(guān)Python 字典序列ChainMap內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 盛源真空泵|空压机-浙江盛源空压机制造有限公司-【盛源官网】 | 外贸资讯网 - 洞悉全球贸易,把握市场先机 | 高低温万能试验机_拉力试验机_拉伸试验机-馥勒仪器科技(上海)有限公司 | 成都竞价托管_抖音代运营_网站建设_成都SEM外包-成都智网创联网络科技有限公司 | 电子天平-华志电子天平厂家| 船用锚链|专业锚链生产厂家|安徽亚太锚链制造有限公司 | 水厂自动化-水厂控制系统-泵站自动化|控制系统-闸门自动化控制-济南华通中控科技有限公司 | 高低温万能试验机_拉力试验机_拉伸试验机-馥勒仪器科技(上海)有限公司 | 找果网 | 苹果手机找回方法,苹果iPhone手机丢了找回,认准找果网! | 蓄电池回收,ups电池后备电源回收,铅酸蓄电池回收,机房电源回收-广州益夫铅酸电池回收公司 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 400电话_400电话申请_888元包年_400电话办理服务中心_400VIP网 | 光伏支架成型设备-光伏钢边框设备-光伏设备厂家 | 全温度恒温培养摇床-大容量-立式-远红外二氧化碳培养箱|南荣百科 | 不锈钢反应釜,不锈钢反应釜厂家-价格-威海鑫泰化工机械有限公司 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 小型玉石雕刻机_家用玉雕机_小型万能雕刻机_凡刻雕刻机官网 | 磁力抛光研磨机_超声波清洗机厂家_去毛刺设备-中锐达数控 | 国际船舶网 - 船厂、船舶、造船、船舶设备、航运及海洋工程等相关行业综合信息平台 | 纸布|钩编布|钩针布|纸草布-莱州佳源工艺纸布厂 | 蓄电池在线监测系统|SF6在线监控泄露报警系统-武汉中电通电力设备有限公司 | 森旺-A级防火板_石英纤维板_不燃抗菌板装饰板_医疗板 | 半自动预灌装机,卡式瓶灌装机,注射器灌装机,给药器灌装机,大输液灌装机,西林瓶灌装机-长沙一星制药机械有限公司 | 防火卷帘门价格-聊城一维工贸特级防火卷帘门厂家▲ | 无锡不干胶标签,卷筒标签,无锡瑞彩包装材料有限公司 | 酒店品牌设计-酒店vi设计-酒店标识设计【国际级】VI策划公司 | 爱德华真空泵油/罗茨泵维修,爱发科-比其尔产品供应东莞/杭州/上海等全国各地 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | 电磁铁_推拉电磁铁_机械手电磁吸盘电磁铁厂家-广州思德隆电子公司 | 上海心叶港澳台联考一对一培训_上海心叶港澳台联考,港澳台联考一对一升学指导 | 旗帜网络笔记-免费领取《旗帜网络笔记》电子书 | 变位机,焊接变位机,焊接变位器,小型变位机,小型焊接变位机-济南上弘机电设备有限公司 | 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 | 泥浆在线密度计厂家-防爆数字压力表-膜盒-远传压力表厂家-江苏大亚自控设备有限公司 | 首页 - 军军小站|张军博客| 浙江栓钉_焊钉_剪力钉厂家批发_杭州八建五金制造有限公司 | 超高频感应加热设备_高频感应电源厂家_CCD视觉检测设备_振动盘视觉检测设备_深圳雨滴科技-深圳市雨滴科技有限公司 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 华溶溶出仪-Memmert稳定箱-上海协烁仪器科技有限公司 | ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 企典软件一站式企业管理平台,可私有、本地化部署!在线CRM客户关系管理系统|移动办公OA管理系统|HR人事管理系统|人力 | 特材真空腔体_哈氏合金/镍基合金/纯镍腔体-无锡国德机械制造有限公司 |