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ù),如下來構(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)若訪問字典中的key值不存在時(shí)會(huì)報(bào)KeyError錯(cuò)誤,這時(shí)候就可以使用defaultdict類來避免這種錯(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正則表達(dá)式中flags參數(shù)的實(shí)例詳解
正則表達(dá)式是一個(gè)很強(qiáng)大的字符串處理工具,幾乎任何關(guān)于字符串的操作都可以使用正則表達(dá)式來完成,下面這篇文章主要給大家介紹了關(guān)于Python正則表達(dá)式中flags參數(shù)的相關(guān)資料,需要的朋友可以參考下2022-04-04
python調(diào)用matplotlib模塊繪制柱狀圖
這篇文章主要為大家介紹了python調(diào)用matplotlib模塊繪制柱狀圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
Python修改文件往指定行插入內(nèi)容的實(shí)例
今天小編就為大家分享一篇Python修改文件往指定行插入內(nèi)容的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01
二種python發(fā)送郵件實(shí)例講解(python發(fā)郵件附件可以使用email模塊實(shí)現(xiàn))
這篇文章主要介紹了使用Python email模塊、smtplib庫發(fā)送郵件的實(shí)例,大家參考使用2013-12-12
Python使用xlrd實(shí)現(xiàn)讀取合并單元格
這篇文章主要介紹了Python使用xlrd實(shí)現(xiàn)讀取合并單元格,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
Python面向?qū)ο髮?shí)現(xiàn)一個(gè)對(duì)象調(diào)用另一個(gè)對(duì)象操作示例
這篇文章主要介紹了Python面向?qū)ο髮?shí)現(xiàn)一個(gè)對(duì)象調(diào)用另一個(gè)對(duì)象操作,結(jié)合實(shí)例形式分析了Python對(duì)象的定義、初始化、調(diào)用等相關(guān)操作技巧,需要的朋友可以參考下2019-04-04
python自然語言編碼轉(zhuǎn)換模塊codecs介紹
這篇文章主要介紹了python自然語言編碼轉(zhuǎn)換模塊codecs介紹,codecs專門用作編碼轉(zhuǎn)換,通過它的接口是可以擴(kuò)展到其他關(guān)于代碼方面的轉(zhuǎn)換,需要的朋友可以參考下2015-04-04

