Python?defaultdict教程示例詳解
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)文章
Python操作mongodb數(shù)據(jù)庫(kù)的方法詳解
這篇文章主要介紹了Python操作mongodb數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式詳細(xì)分析了Python下載、安裝pymongo及操作MongoDB數(shù)據(jù)庫(kù)相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-12-12
Python音樂(lè)爬蟲(chóng)完美繞過(guò)反爬
這篇文章主要介紹了Python音樂(lè)爬蟲(chóng)完美繞過(guò)反爬的過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08
pyside6-uic生成py代碼中文為unicode(亂碼)的問(wèn)題解決方案
這篇文章主要介紹了如何解決pyside6-uic生成py代碼中文為unicode(亂碼)的問(wèn)題,文中通過(guò)代碼和圖文介紹的非常詳細(xì),對(duì)大家解決問(wèn)題有一定的幫助,需要的朋友可以參考下2024-02-02
基于OpenCV和Gradio實(shí)現(xiàn)簡(jiǎn)單的人臉識(shí)別詳解
這篇文章主要為大家詳細(xì)介紹了如何基于OpenCV和Gradio實(shí)現(xiàn)簡(jiǎn)單的人臉識(shí)別功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-04-04
python矩陣運(yùn)算,轉(zhuǎn)置,逆運(yùn)算,共軛矩陣實(shí)例
這篇文章主要介紹了python矩陣運(yùn)算,轉(zhuǎn)置,逆運(yùn)算,共軛矩陣實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
在Python中操作PDF的常見(jiàn)方法小結(jié)
當(dāng)在Python中操作PDF時(shí),有幾種常見(jiàn)的方法,每種方法都有其獨(dú)特的優(yōu)點(diǎn)和用例,在本文中,我們將深入探討這些方法,并提供豐富的示例代碼,以幫助大家更好地理解如何使用這些技術(shù),需要的朋友可以參考下2024-01-01
python實(shí)現(xiàn)對(duì)excel中需要的數(shù)據(jù)的單元格填充顏色
這篇文章主要介紹了python實(shí)現(xiàn)對(duì)excel中需要的數(shù)據(jù)的單元格填充顏色,文章圍繞主題展開(kāi)詳細(xì)單元格填充介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-06-06

