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

首頁 > 編程 > Python > 正文

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

2020-01-04 15:50:42
字體:
來源:轉載
供稿:網友

本文實例講述了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程序設計有所幫助。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 富源县| 武城县| 红河县| 乌拉特前旗| 平乐县| 枝江市| 濮阳市| 五家渠市| 金乡县| 洛宁县| 浠水县| 仁寿县| 晋宁县| 平远县| 厦门市| 台安县| 察哈| 堆龙德庆县| 米脂县| 德清县| 海晏县| 安阳市| 连平县| 昭觉县| 阿图什市| 荆州市| 彝良县| 应用必备| 正阳县| 浠水县| 买车| 吴堡县| 新兴县| 饶阳县| 收藏| 昌宁县| 大英县| 河池市| 岐山县| 河池市| 东台市|