Python cookbook(數(shù)據(jù)結構與算法)在字典中將鍵映射到多個值上的方法
本文實例講述了Python在字典中將鍵映射到多個值上的方法。分享給大家供大家參考,具體如下:
問題:一個能將鍵(key)映射到多個值的字典(即所謂的一鍵多值字典[multidict])
解決方案:如果想讓鍵映射到多值,需要將這多個值保持到另一個容器如列表或集合中;
>>> 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的一個特點是它會自動給字典初始化第一個值,這樣只需添加元素即可。例如:
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}})
>>>
關于defaultdict需要注意的一點,他會自動創(chuàng)建字典表項以待稍后的訪問(即使這些表項當前在字典中還沒有找到)。
如果想取消這個功能,可以在普通的字典上調用setdefault()方法來取代,例如:
d={} #一個普通的字典
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]}
補充:
構建一個一鍵多值的字典很容易,但是如果試著自己對第一個值做初始化操作,這個會變得很雜亂,如果使用defaultdic后代碼會簡潔很多:
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]]})
>>>
(代碼摘自《Python Cookbook》)
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結構與算法教程》、《Python函數(shù)使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
相關文章
M1芯片Mac上Anaconda的暫時替代(miniforge)
這篇文章主要介紹了M1芯片Mac上Anaconda的暫時替代(miniforge),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03
Python?Requests?基本使用及Requests與?urllib?區(qū)別
在使用Python爬蟲時,需要模擬發(fā)起網(wǎng)絡請求,主要用到的庫有requests庫和python內置的urllib庫,一般建議使用requests,它是對urllib的再次封裝,今天通過本文給大家講解Python?Requests使用及urllib區(qū)別,感興趣的朋友一起看看吧2022-11-11

