色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

Python collections.defaultdict模塊用法詳解

瀏覽:6日期:2022-07-20 16:56:36

Python中通過Key訪問字典,當Key不存在時,會引發‘KeyError’異常。為了避免這種情況的發生,可以使用collections類中的defaultdict()方法來為字典提供默認值。

語法格式:

collections.defaultdict([default_factory[, …]])class defaultdict(Dict[_KT, _VT], Generic[_KT, _VT]):default_factory: Callable[[], _VT]

該函數返回一個類似字典的對象。defaultdict是Python內建字典類(dict)的一個子類,它重寫了方法_missing_(key),增加了一個可寫的實例變量default_factory,實例變量default_factory被missing()方法使用,如果該變量存在,則用以初始化構造器,如果沒有,則為None。其它的功能和dict一樣。

第一個參數為default_factory屬性提供初始值,默認為None;其余參數包括關鍵字參數(keyword arguments)的用法,和dict構造器用法一樣。

1.使用list作第一個參數,可以很容易將鍵-值對序列轉換為列表字典。

from collections import defaultdicts=[(’yellow’,1),(’blue’, 2), (’yellow’, 3), (’blue’, 4), (’red’, 1)]d=defaultdict(list)for k, v in s: d[k].append(v)a=sorted(d.items())print dprint a’’’defaultdict(<type ’list’>, {’blue’: [2, 4], ’red’: [1], ’yellow’: [1, 3]})[(’blue’, [2, 4]), (’red’, [1]), (’yellow’, [1, 3])]’’’

當字典中沒有的鍵第一次出現時,default_factory自動為其返回一個空列表,list.append()會將值添加進新列表;再次遇到相同的鍵時,list.append()將其它值再添加進該列表。

這種方法比使用dict.setdefault()更為便捷,dict.setdefault()也可以實現相同的功能。

s = [(’yellow’, 1), (’blue’, 2), (’yellow’, 3), (’blue’, 4), (’red’, 1)]d={}for k, v in s: d.setdefault(k,[]).append(v)print da=sorted(d.items())print a’’’{’blue’: [2, 4], ’red’: [1], ’yellow’: [1, 3]}[(’blue’, [2, 4]), (’red’, [1]), (’yellow’, [1, 3])]’’’

2.defaultdict還可以被用來計數,將default_factory設為int即可。

s = ’mississippi’d = defaultdict(int)for k in s: d[k] += 1print da=sorted(d.items())print a’’’defaultdict(<type ’int’>, {’i’: 4, ’p’: 2, ’s’: 4, ’m’: 1})[(’i’, 4), (’m’, 1), (’p’, 2), (’s’, 4)]’’’

字符串中的字母第一次出現時,字典中沒有該字母,default_factory函數調用int()為其提供一個默認值0,加法操作將計算出每個字母出現的次數。

函數int()是常值函數的一種特例,總是返回0。使用匿名函數(lambda function)可以更快、更靈活的創建常值函數,返回包括0在內的任意常數值。

def constant_factory(value): return lambda: valued = defaultdict(constant_factory(’<missing>’))print dd.update(name=’John’, action=’ran’)print dprint ’%(name)s %(action)s to %(object)s’ % d ’’’defaultdict(<function <lambda> at 0x10c180668>, {})defaultdict(<function <lambda> at 0x10c180668>, {’action’: ’ran’, ’name’: ’John’})John ran to <missing>’’’

3.default_factory設為set時,可以用defaultdict建立集合字典(a dictionary of sets)

s = [(’red’, 1), (’blue’, 2), (’red’, 3), (’blue’, 4), (’red’, 1), (’blue’, 4)]d = defaultdict(set)for k, v in s: d[k].add(v)print da=sorted(d.items())print a’’’defaultdict(<type ’set’>, {’blue’: set([2, 4]), ’red’: set([1, 3])})[(’blue’, set([2, 4])), (’red’, set([1, 3]))]’’’

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产精品亚洲第一区柳州莫青 | 美女张开腿让男人桶的动态图 | 女人张开腿让男人桶免费网站 | 美国一级毛片免费看 | 美女张开双腿让男人桶视频免费 | 欧美做爰孕妇群 | 日本波多野结衣视频 | 99国产精品高清一区二区二区 | 欧美三级黄 | 最近韩国日本免费免费版 | 精品理论片一区二区三区 | 在线另类视频 | 黄色毛片免费看 | 亚洲精品一区二区三区中文字幕 | 成人毛片在线播放 | 久久精品国产99国产精品 | 久久99亚洲精品久久久久网站 | 91久久精品国产免费一区 | 黄色影院在线 | 日韩美毛片 | 国产一区二区高清在线 | 亚洲经典在线观看 | 欧美成人免费全网站大片 | 国产激情视频在线 | 国产亚洲欧洲一区二区三区 | 国内精品一区二区在线观看 | 免费a级黄毛片 | 男女上下爽无遮挡午夜免费视频 | 欧美视频三区 | 国内精品自产拍在线观看91 | 美女视频黄a视频免费全过程 | 国产三级做爰在线观看视频 | 免费一级毛片在线播放 | 欧美一区欧美二区 | 国产成人精品久久一区二区小说 | 超级香蕉97视频在线观看一区 | 国产精品久久在线观看 | 性夜黄a爽爽免费视频国产 性夜影院爽黄a爽免费看网站 | 欧美福利一区二区三区 | 亚洲欧美中文字幕在线网站 | 国产精品1区2区3区在线播放 |