Python使用defaultdict解決字典默認(rèn)值
在Python中,defaultdict是一種特殊類型的字典,它可以自動(dòng)為字典中不存在的鍵設(shè)置默認(rèn)值。這種類型的字典是在collections模塊中定義的。它為我們提供了一個(gè)更方便,更容易使用的字典。在這篇文章中,我們將深入探討Python中的defaultdict,并探討如何使用它們。
1.導(dǎo)入defaultdict
我們需要先導(dǎo)入包含defaultdict的collections模塊??梢酝ㄟ^(guò)在Python代碼的頂部加入以下代碼行來(lái)實(shí)現(xiàn)這一點(diǎn):
from collections import defaultdict
2.創(chuàng)建defaultdict
創(chuàng)建defaultdict的方法在語(yǔ)法上與創(chuàng)建Python字典是相同的。我們只需要將defaultdict的類型作為構(gòu)造函數(shù)的參數(shù)。例如,如果我們要?jiǎng)?chuàng)建一個(gè)存儲(chǔ)整數(shù)的defaultdict,我們可以使用以下代碼:
int_dict = defaultdict(int)
如果我們要在defaultdict中存儲(chǔ)字符串,可以使用以下代碼:
str_dict = defaultdict(str)
在這兩種情況下,我們都通過(guò)向defaultdict構(gòu)造函數(shù)傳遞類型來(lái)定義了一個(gè)新的defaultdict實(shí)例。這個(gè)類型對(duì)于defaultdict的所有鍵都將設(shè)置為相應(yīng)的默認(rèn)值。
3.使用defaultdict
當(dāng)試圖訪問(wèn)defaultdict的鍵時(shí),如果該鍵不存在,則會(huì)自動(dòng)設(shè)置與傳遞給構(gòu)造函數(shù)的類型相應(yīng)的默認(rèn)值。例如,在下面的代碼中,我們使用defaultdict存儲(chǔ)一個(gè)人的年齡,并將默認(rèn)值設(shè)置為0:
age_dict = defaultdict(int) age_dict['alice'] = 25 age_dict['bob'] = 30 age_dict['charlie'] print(age_dict)
輸出將是 {‘alice’: 25, ‘bob’: 30, ‘charlie’: 0} ,當(dāng) ‘charlie’ 還沒(méi)有在 default 字典中時(shí),自動(dòng)用默認(rèn)值 0 進(jìn)行填充。
在這個(gè)例子中,我們給默認(rèn)字典添加了兩個(gè)鍵, ‘alice’ 和 ‘bob’ ,并直接查詢了另一個(gè)鍵 ‘charlie’ ,這個(gè)鍵不在字典中。由于 ‘charlie’ 不存在于字典中,defaultdict自動(dòng)地將該鍵對(duì)應(yīng)的值設(shè)置為位于構(gòu)造函數(shù)中傳遞的相應(yīng)類型的默認(rèn)值(在這種情況下是整數(shù)0)。我們可以看到,這確實(shí)是我們預(yù)期的結(jié)果。
4.添加defaultdict默認(rèn)值
我們還可以通過(guò)為defaultdict函數(shù)提供一個(gè)函數(shù)作為默認(rèn)值來(lái)定義一個(gè)默認(rèn)值。這個(gè)函數(shù)將在字典中缺少某個(gè)鍵的情況下調(diào)用,并返回所需的默認(rèn)值。例如,我們可以使用以下代碼定義一個(gè)函數(shù),該函數(shù)以字典中的鍵作為其默認(rèn)值:
def return_key(): ? ? return "unknown" key_dict = defaultdict(return_key) key_dict['apple'] = 'fruit' print(key_dict['pear']) print(key_dict['banana'])
輸出將是:
unknown
unknown
在這個(gè)例子中,我們定義了一個(gè)函數(shù) return_key() ,它簡(jiǎn)單地返回 “unknown” 。然后我們創(chuàng)建了一個(gè) default 字典,并使用這個(gè)函數(shù)作為默認(rèn)值來(lái)定義它。當(dāng)我們嘗試訪問(wèn) “pear” 和 “banana” 這兩個(gè)鍵時(shí),我們得到了 “unknown” 這個(gè)默認(rèn)值。但是,當(dāng)我們?cè)谧值渲刑砑恿随I “apple” 時(shí),我們得到了 “fruit”。
5.結(jié)論
就本節(jié)介紹Python中的defaultdict而言,這就是全部?jī)?nèi)容了。我們發(fā)現(xiàn)defaultdict很容易使用,而且在許多情況下都非常有用。defaultdict自動(dòng)在字典中缺少某個(gè)鍵時(shí)進(jìn)行設(shè)置默認(rèn)值,這特別適用于復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和嵌套字典。由于Python中的defaultdict是一個(gè)包含有用的功能的標(biāo)準(zhǔn)庫(kù),所以大多數(shù)Python程序員都對(duì)其有一定的了解,因此對(duì)其理解是很有必要的。
到此這篇關(guān)于Python使用defaultdict解決字典默認(rèn)值的文章就介紹到這了,更多相關(guān)Python defaultdict字典默認(rèn)值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一小時(shí)學(xué)會(huì)TensorFlow2之基本操作1實(shí)例代碼
這篇文章主要介紹了TensorFlow2的基本操作第一節(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09最近Python有點(diǎn)火? 給你7個(gè)學(xué)習(xí)它的理由!
最近Python有點(diǎn)火?這篇文章主要為大家分享了7個(gè)你現(xiàn)在就該學(xué)習(xí)Python的理由,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06Python如何獲取Win7,Win10系統(tǒng)縮放大小
這篇文章主要介紹了Python如何獲取Win7,Win10系統(tǒng)縮放大小,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01Python3.7+tkinter實(shí)現(xiàn)查詢界面功能
這篇文章主要介紹了Python3.7+tkinter實(shí)現(xiàn)查詢界面功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12python3 破解 geetest(極驗(yàn))的滑塊驗(yàn)證碼功能
這篇文章主要介紹了python3 破解 geetest(極驗(yàn))的滑塊驗(yàn)證碼功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-02-02為了順利買到演唱會(huì)的票用Python制作了自動(dòng)搶票的腳本
大麥網(wǎng),是中國(guó)綜合類現(xiàn)場(chǎng)娛樂(lè)票務(wù)營(yíng)銷平臺(tái),業(yè)務(wù)覆蓋演唱會(huì)、 話劇、音樂(lè)劇、體育賽事等領(lǐng)域。但是因?yàn)槠睌?shù)有限,還有黃牛們不能丟了飯碗,所以導(dǎo)致了,很多人都搶不到票,那么,今天帶大家用Python來(lái)制作一個(gè)自動(dòng)搶票的腳本小程序2021-10-10python飛機(jī)大戰(zhàn)pygame游戲之?dāng)硻C(jī)出場(chǎng)實(shí)現(xiàn)方法詳解
這篇文章主要介紹了python飛機(jī)大戰(zhàn)pygame游戲之?dāng)硻C(jī)出場(chǎng)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了Python使用pygame模塊實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲中敵機(jī)出場(chǎng)相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-12-12