您好,登錄后才能下訂單哦!
這篇文章主要介紹了Python如何在字典中將鍵映射到多個(gè)值上,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
問題:一個(gè)能將鍵(key)映射到多個(gè)值的字典(即所謂的一鍵多值字典[multidict])
解決方案:如果想讓鍵映射到多值,需要將這多個(gè)值保持到另一個(gè)容器如列表或集合中;
>>> d={'a':[1,2,3],'b':[4,5]} >>> d {'b': [4, 5], 'a': [1, 2, 3]} >>> e={'a':{1,2,3,3},'b':{4,5}} >>> e {'b': {4, 5}, 'a': {1, 2, 3}} >>> f={'a':[1,2,3,3],'b':[4,5]} >>> f {'b': [4, 5], 'a': [1, 2, 3, 3]} >>>
更方便的創(chuàng)建這樣的字典是利用collections模塊中的defaultdict類。defaultdict的一個(gè)特點(diǎn)是它會(huì)自動(dòng)給字典初始化第一個(gè)值,這樣只需添加元素即可。例如:
from collections import defaultdict d=defaultdict(list) #創(chuàng)建一鍵多值的字典,key的value是list類型 d['a'].append(1) d['a'].append(2) d['a'].append(2) d['b'].append(4) c=defaultdict(set) #創(chuàng)建一鍵多值的字典,key的value是set類型 c['a'].add(1) c['a'].add(2) c['a'].add(2) c['b'].add(4) print('key的value是list類型的字典:',d) print('key的value是set類型的字典:',c)
>>> ================================ RESTART ================================ >>> key的value是list類型的字典: defaultdict(<class 'list'>, {'b': [4], 'a': [1, 2, 2]}) key的value是set類型的字典: defaultdict(<class 'set'>, {'b': {4}, 'a': {1, 2}}) >>>
關(guān)于defaultdict需要注意的一點(diǎn),他會(huì)自動(dòng)創(chuàng)建字典表項(xiàng)以待稍后的訪問(即使這些表項(xiàng)當(dāng)前在字典中還沒有找到)。
如果想取消這個(gè)功能,可以在普通的字典上調(diào)用setdefault()
方法來取代,例如:
d={} #一個(gè)普通的字典 d.setdefault('a',[]).append(1) d.setdefault('a',[]).append(2) d.setdefault('a',[]).append(2) d.setdefault('b',[]).append(4) >>>
key的value是list類型的字典:
{'a': [1, 2, 2], 'b': [4]}
補(bǔ)充:
構(gòu)建一個(gè)一鍵多值的字典很容易,但是如果試著自己對(duì)第一個(gè)值做初始化操作,這個(gè)會(huì)變得很雜亂,如果使用defaultdic后代碼會(huì)簡(jiǎn)潔很多:
pairs={'a':[22,44],'b':[88]} d=defaultdict(list) for key,value in pairs.items(): d[key].append(value) print (d) >>> defaultdict(<class 'list'>, {'a': [[22, 44]], 'b': [[88]]}) >>>
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Python如何在字典中將鍵映射到多個(gè)值上”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。