亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python?defaultdict教程示例詳解

 更新時(shí)間:2023年01月11日 15:15:05   作者:YunfengWang  
這篇文章主要為大家介紹了Python?defaultdict教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1. 概述

在我們使用Python中的dict時(shí),常常需要判斷某個(gè)關(guān)鍵字是否已經(jīng)在dict中,如果不存在則初始化,存在則進(jìn)行另外的操作。例如統(tǒng)計(jì)一篇文章中所有單詞出現(xiàn)次數(shù)的代碼,大致寫法如下:

words_num = {}
for word in words:
    if word not in words_num.keys():
        words_num[word] = 1
    else:
        words_num[word] += 1

這樣寫總是需要判斷key是否在dict中,不是很優(yōu)雅。

Python標(biāo)準(zhǔn)庫(kù)collections中defaultdict類可以很好的解決這個(gè)問(wèn)題。這個(gè)類使用與dict幾乎一樣,除了可以在初始化時(shí)設(shè)置key的默認(rèn)類型和數(shù)值。類的聲明格式為defaultdict(default_factory=None, /[, ...]),default_factory是一個(gè)Callable類型的變量。

例如,foo = defaultdict(int)表示foo中的key的默認(rèn)類型是int,且默認(rèn)值為int的默認(rèn)值0,我們可以獲取任意的key,不需要手動(dòng)初始化key:

>>> from collections import defaultdict
>>> foo = defaultdict(int)
>>> foo['a']
0
>>> foo['b']
0
>>> foo['whatever']
0
>>> foo['a'] += 1
>>> foo['a']
1

所以最開(kāi)始的例子可以簡(jiǎn)化為如下:

from collections import defaultdict
words_num = defaultdict(int)
for word in words:
    words_num[word] += 1

可以看到使用defaultdict后,代碼中只需要關(guān)注上層邏輯(統(tǒng)計(jì)單詞的出現(xiàn)次數(shù)),而不需要關(guān)注具體的語(yǔ)法的代碼實(shí)現(xiàn)(dict是否存在某個(gè)key,沒(méi)有的話xxx,有的話xxx),因此世界變得更美好了一些。

除了int外,用list,tuple,dict,set等作為變量也比較常見(jiàn)。除了內(nèi)置類型外,還可以自定義函數(shù),比如設(shè)置key的默認(rèn)值為'China':

>>> from collections import defaultdict
>>> def set_default_contry():
...     return "China"
...
>>> person_from = defaultdict(set_default_contry)
>>> person_from['張三']
'China'
>>> person_from['李四']
'China'
>>> person_from['Tim'] = 'USA'
>>> person_from
defaultdict(<function set_default_contry at 0x10896eca0>, {'a': 'China', '張三': 'China', '李四': 'China', 'Tim': 'USA'})

defauldict是一個(gè)簡(jiǎn)單但很好用的功能,在日常的使用中還是能減少一些代碼復(fù)雜度的。希望這篇小文能給讓你寫代碼更容易,更開(kāi)心。

以上就是Python defaultdict教程示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Python defaultdict教程的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論