一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類(lèi)導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)將多個(gè)映射合并為單個(gè)映射的方法

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

2021-02-02 00:28壟上行 Python

這篇文章主要介紹了Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)將多個(gè)映射合并為單個(gè)映射的方法,結(jié)合實(shí)例形式分析了Python字典映射合并操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下

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

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

解決方案:利用collections模塊中的ChainMap類(lèi)

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 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) #如果有重復(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 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'])
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>>> ================================ 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操作的是原始字典,可以避免一些令人不悅的行為,例如其中任何一個(gè)原始字典的修改無(wú)法反應(yīng)到合并后的字典中。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
>>> 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》)

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

原文鏈接:http://www.cnblogs.com/apple2016/p/5751301.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日日骑夜夜骑 | katsumi精品hd| 加勒比一本大道在线 | 亚洲欧美激情日韩在线 | 小寡妇好紧进去了好大看视频 | 91久久福利国产成人精品 | 大伊香蕉在线精品不卡视频 | 国产一区二区三区四 | 精品女同一区二区三区免费站 | 俄罗斯freeⅹ性欧美 | 99国产情在线视频 | 久久综合给会久久狠狠狠 | 欧美午夜精品久久久久久黑人 | 国产大胆歌舞团网站 | 国产视频一区二区 | 521色香蕉网在线观看免费 | 国产成人无精品久久久 | 国产小视频在线播放 | 天天天做天天天天爱天天想 | 精品国产91久久久久 | 国产精品日韩欧美一区二区三区 | 国产男女爱视频在线观看 | 四虎精品成人免费影视 | 日本红怡院亚洲红怡院最新 | 动漫美女羞羞视频 | 蜜桃在线 | 午夜宅男影院 | 久久这里只有精品视频9 | 网站色小妹 | 国产久草在线 | 亚洲第一福利网 | 国产综合第一页 | 超强台风免费观看完整版视频 | 日韩在线视频免费观看 | 天选之王漫画顾长歌免费阅读 | www91在线观看 | 天天操天天草 | 午夜精品久久久久久中宇 | 91精品国产免费久久 | 秘书喂奶好爽一边 | 久久精品国产在热亚洲 |