欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Python如何合并多個(gè)字典或映射

這篇文章運(yùn)用簡單易懂的例子給大家介紹Python 如何合并多個(gè)字典或映射,代碼非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作與策劃設(shè)計(jì),武穴網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:武穴等地區(qū)。武穴做網(wǎng)站價(jià)格咨詢:18980820575

問題

現(xiàn)在有多個(gè)字典或者映射,你想將它們從邏輯上合并為一個(gè)單一的映射后執(zhí)行某些操作,比如查找值或者檢查某些鍵是否存在。

解決方案

加入你有如下兩個(gè)字典:

a = {'x': 1, 'z': 3 }
b = {'y': 2, 'z': 4 }

現(xiàn)在假設(shè)你必須在兩個(gè)字典中執(zhí)行查找操作(比如先從a中找,如果找不到再在b中找)。一個(gè)非常簡單扼解決方案就是使用collections模塊中的ChainMap類。比如:

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)

討論

一個(gè)ChainMap接受多個(gè)字典并將它們?cè)谶壿嬌献優(yōu)橐粋€(gè)字典。然后,這些字典并不是真的合并在一起了,ChainMap類只是在內(nèi)部創(chuàng)建了一個(gè)容納這些字典的列表并重新定義了一些常見的字典操作來遍歷這個(gè)列表。大部分字典操作都是可以正常使用的,比如:

>>> len(c)
3
>>> list(c.keys())
['x', 'y', 'z']
>>> list(c.values())
[1, 2, 3]
>>>

如果出現(xiàn)重復(fù)鍵,那么第一次出現(xiàn)的映射值會(huì)被返回。因此,例子程序中的c[‘z']總是會(huì)返回字典a中對(duì)應(yīng)的值,而不是b中對(duì)應(yīng)的值。

對(duì)于字典的更新或刪除操作總是影響的是列表中第一個(gè)字典。比如:

>>> c['z'] = 10
>>> c['w'] = 40
>>> del c['x']
>>> a
{'w': 40, 'z': 10}
>>> del c['y']
Traceback (most recent call last):
...
KeyError: "Key not found in the first mapping: 'y'"
>>>

ChainMap對(duì)于編程語言中的作用范圍變量(比如globals, locals等)是非常有用的。事實(shí)上,有一些方法可以使它變得簡單:

>>> 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
>>> values
ChainMap({'x': 3}, {'x': 2}, {'x': 1})
>>> values['x']
3
>>> # Discard last mapping
>>> values = values.parents
>>> values['x']
2
>>> # Discard last mapping
>>> values = values.parents
>>> values['x']
1
>>> values
ChainMap({'x': 1})
>>>

作為ChainMap的替代,你可能會(huì)考慮使用update()方法將兩個(gè)字典合并。比如:

>>> a = {'x': 1, 'z': 3 }
>>> b = {'y': 2, 'z': 4 }
>>> merged = dict(b)
>>> merged.update(a)
>>> merged['x']
1
>>> merged['y']
2
>>> merged['z']
3
>>>

這樣也能行得通,但是它需要你創(chuàng)建一個(gè)完全不同的字典對(duì)象(或者是破壞現(xiàn)有字典結(jié)構(gòu))。同時(shí),如果原字典做了更新,這種改變不會(huì)反應(yīng)到新的合并字典中去。比如:

>>> a['x'] = 13
>>> merged['x']
1

ChianMap使用原來的字典,它自己不創(chuàng)建新的字典。所以它并不會(huì)產(chǎn)生上面所說的結(jié)果,比如:

>>> a = {'x': 1, 'z': 3 }
>>> b = {'y': 2, 'z': 4 }
>>> merged = ChainMap(a, b)
>>> merged['x']
1
>>> a['x'] = 42
>>> merged['x'] # Notice change to merged dicts
42
>>>

關(guān)于Python 如何合并多個(gè)字典或映射就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

本文名稱:Python如何合并多個(gè)字典或映射
文章鏈接:http://aaarwkj.com/article16/iihpgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站建設(shè)、搜索引擎優(yōu)化軟件開發(fā)、云服務(wù)器、網(wǎng)頁設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)
日韩欧美国产精品加勒比| 亚洲精品女同专区视频| 蜜臀av首页在线观看| 午夜福利激情视频在线| 一本大道东京热无码AⅤ片| 五月婷婷丁香花综合网| 日韩夫妻性生活免费视频| 日韩av大片一区二区三区| 国产欧洲日本一区二区| 日本a级片免费在线观看| 午夜性色福利在线播放| 91精品免费播放在线观看| 日本高清免费观看一区| 国产大学生情侣在线视频| 99精品国产一区二区青青性色| 日本一区二区三区高清不卡| 九九热九九热九九热九| 中文字幕精品一区二区三| 国产黄片免费高清观看| 男人天堂插插综合搜索| 国产精品不卡一不卡二| 国产欧美又粗又猛又爽老| 色噜噜男人的天堂av| 九九九热在线观看视频| 日韩夫妻性生活免费视频| 中文字幕人妻丝袜一区一三区| 成人欧美黑人一区二区| 992免费影院 在线观看| 久久久国产精品免费看| 欧美黄片完整版在线观看 | 日韩一区二区三区中文字幕| 日韩亚洲人成网站在线播放| 日韩一区二区三区高清免费视频成人 | 亚洲精品网站国产高清| 日本精品a秘在线观看| 欧美人妻不卡一区二区久久| 日韩在线视频一区二区三| 国产三级黄色大片在线免费看 | 欧美日韩亚洲激情一区| 日韩成人一级片在线观看| 亚洲国产一区二区高清|