python中defaultdict用法實(shí)例詳解
defaultdict底層代碼:
在字典中查找某個(gè)值時(shí),若key不存在時(shí)則會(huì)返回一個(gè)KeyError錯(cuò)誤而不是一個(gè)默認(rèn)值,這時(shí)候可以使用defaultdict函數(shù)。
注意:使用dict[key]=value時(shí),若key不存在則報(bào)錯(cuò);使用dict.get(key)時(shí),若key不存在則會(huì)返回一個(gè)默認(rèn)值。
defaultdict接受一個(gè)工廠函數(shù)作為參數(shù),如下來(lái)構(gòu)造:
dict =defaultdict( factory_function)
factory_function可以是list、set、str等等,作用是當(dāng)key不存在時(shí),返回的是工廠函數(shù)的默認(rèn)值,比如list對(duì)應(yīng)[ ],str對(duì)應(yīng)的是空字符串,set對(duì)應(yīng)set( ),int對(duì)應(yīng)0。
defaultdict是python內(nèi)建dict類的一個(gè)字類,功能與dict相同,但它帶有一個(gè)默認(rèn)的值,若key值不存在時(shí)返回一個(gè)默認(rèn)的值。
示例代碼:
lst = ['A', 'B', 'C', 'D', 'e'] dic = {} for i in lst: dic[i] += 1 print(dic)
若訪問(wèn)字典中的key值不存在時(shí)會(huì)報(bào)KeyError錯(cuò)誤,這時(shí)候就可以使用defaultdict類來(lái)避免這種錯(cuò)誤。
dict.setdefault()方法:有兩個(gè)參數(shù),第一個(gè)是參數(shù),第二個(gè)是默認(rèn)值。
示例代碼:
lst = ['A', 'B', 'C', 'D', 'e'] dic = {} for i in lst: dic.setdefault(i, 0) dic[i] += 1 print(dic)
示例代碼:
from collections import defaultdict dict1 = defaultdict(int) dict2 = defaultdict(set) dict3 = defaultdict(str) dict4 = defaultdict(list) dict4[1] = 666 print(dict1[0]) print(dict2[0]) print(dict3[0]) print(dict4[0]) print(dict4[1])
運(yùn)行效果:
setdefault()和defaultdict()的區(qū)別:
setdefault()
setdefault()是字典的一個(gè)實(shí)例方法,接收兩個(gè)參數(shù),用法和字典的get()方法相似,但是比get()方法更加強(qiáng)大。都為字典的key設(shè)置一個(gè)默認(rèn)值。
二者的區(qū)別是:get 方法設(shè)置的默認(rèn)值不會(huì)改變?cè)值洌?而setdefault設(shè)置的默認(rèn)值會(huì)改變?cè)值涞闹怠?/p>
示例代碼:
dic1 = {"A": "a", "B": "b"} x = dic1.get("E", "e") print(x) print(dic1) dic2 = {"C": "c", "D": "d"} y = dic2.setdefault("E", 'e') print(y) print(dic2)
defaultdict()
defaultdict是屬于collections 模塊下的一個(gè)工廠函數(shù),用于構(gòu)建字典對(duì)象,接收一個(gè)函數(shù)(可調(diào)用)對(duì)象為作為參數(shù)。參數(shù)返回的類型是什么,key對(duì)應(yīng)value就是什么類型。
示例代碼:
from collections import defaultdict lst = [("A", "1"), ("B", "1"), ("A", "2"), ("B", "2"), ("A", "3"), ("B", "3")] dic = defaultdict(list) for key, value in lst: dic[key].append(value) print(dic)
總結(jié)
到此這篇關(guān)于python中defaultdict用法的文章就介紹到這了,更多相關(guān)python defaultdict用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python Django批量導(dǎo)入不重復(fù)數(shù)據(jù)
這篇文章主要介紹了python Django批量導(dǎo)入不重復(fù)數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2016-03-03python計(jì)算對(duì)角線有理函數(shù)插值的方法
這篇文章主要介紹了python計(jì)算對(duì)角線有理函數(shù)插值的方法,涉及Python數(shù)學(xué)運(yùn)算的相關(guān)技巧,需要的朋友可以參考下2015-05-05Python實(shí)現(xiàn)國(guó)外賭場(chǎng)熱門游戲Craps(雙骰子)
這篇文章主要介紹了Python實(shí)現(xiàn)國(guó)外賭場(chǎng)熱門游戲Craps(雙骰子)的源碼及運(yùn)行方法,十分簡(jiǎn)單,有需要的小伙伴可以參考下。2015-03-03python3.6 +tkinter GUI編程 實(shí)現(xiàn)界面化的文本處理工具(推薦)
這篇文章主要介紹了python3.6 +tkinter GUI編程 實(shí)現(xiàn)界面化的文本處理工具(推薦)的相關(guān)資料,需要的朋友可以參考下2017-12-12導(dǎo)入pytorch時(shí)libmkl_intel_lp64.so找不到問(wèn)題解決
這篇文章主要為大家介紹了導(dǎo)入pytorch時(shí)libmkl_intel_lp64.so找不到問(wèn)題解決示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Python動(dòng)態(tài)導(dǎo)入模塊和反射機(jī)制詳解
這篇文章主要介紹了Python動(dòng)態(tài)導(dǎo)入模塊和反射機(jī)制詳解,需要的朋友可以參考下2020-02-02python中partial()基礎(chǔ)用法說(shuō)明
這篇文章主要給大家介紹了關(guān)于python中partial()基礎(chǔ)用法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧2018-12-12Python爬蟲(chóng)之urllib基礎(chǔ)用法教程
這篇文章主要為大家詳細(xì)介紹了Python爬蟲(chóng)1.1 urllib基礎(chǔ)用法教程,用于對(duì)Python爬蟲(chóng)技術(shù)進(jìn)行系列文檔講解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10