国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python cookbook(數據結構與算法)在字典中將鍵映射到多個值上的

2020-02-22 23:15:48
字體:
來源:轉載
供稿:網友

本文實例講述了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]}>>>

更方便的創建這樣的字典是利用collections模塊中的defaultdict類。defaultdict的一個特點是它會自動給字典初始化第一個值,這樣只需添加元素即可。例如:

from collections import defaultdictd=defaultdict(list) #創建一鍵多值的字典,key的value是list類型d['a'].append(1)d['a'].append(2)d['a'].append(2)d['b'].append(4)c=defaultdict(set) #創建一鍵多值的字典,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需要注意的一點,他會自動創建字典表項以待稍后的訪問(即使這些表項當前在字典中還沒有找到)。

如果想取消這個功能,可以在普通的字典上調用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數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》

希望本文所述對大家Python程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 文成县| 乌兰浩特市| 连云港市| 巫山县| 婺源县| 鲁山县| 永嘉县| 江川县| 孙吴县| 新干县| 通州区| 阿克陶县| 庆阳市| 浦县| 柳江县| 太和县| 昌宁县| 澎湖县| 昂仁县| 龙门县| 务川| 磴口县| 金川县| 吴忠市| 三都| 大荔县| 贡觉县| 平果县| 南江县| 富锦市| 南陵县| 淳安县| 壤塘县| 凤城市| 耿马| 西和县| 巴林左旗| 周口市| 高清| 唐河县| 甘洛县|