python中defaultdict的用法詳解
初識(shí)defaultdict
之前在使用字典的時(shí)候, 用的比較隨意, 只是簡(jiǎn)單的使用dict.
然而這樣在使用不存在的key的時(shí)候發(fā)生KeyError這樣的一個(gè)報(bào)錯(cuò), 這時(shí)候就該defaultdict登場(chǎng)了.
如何使用defaultdict
可以這樣
from collections import defaultdict d1 = defaultdict(int)
或者這樣
import collections d1 = collections.defaultdict(int)
defaultdict與dict實(shí)例化字典類型的區(qū)別
使用defaultdict任何未定義的key都會(huì)默認(rèn)返回一個(gè)根據(jù)method_factory參數(shù)不同的默認(rèn)值, 而相同情況下dict()會(huì)返回KeyError.
比較下面代碼:
d1 = dict() d2 = defaultdict(list) print(d1['a']) print(d2['a'])
defaultdict的構(gòu)造
python官方文檔中對(duì)defaultdict的定義如下:
class collections.defaultdict([default_factory[, ...]])
python官方文檔中對(duì)defaultdict的解釋如下:
defaultdic dict subclass that calls a factory function to supply missing values
default_factory 接收一個(gè)工廠函數(shù)作為參數(shù), 例如int str list set等.
defaultdict在dict的基礎(chǔ)上添加了一個(gè)missing(key)方法, 在調(diào)用一個(gè)不存的key的時(shí)候, defaultdict會(huì)調(diào)用__missing__, 返回一個(gè)根據(jù)default_factory參數(shù)的默認(rèn)值, 所以不會(huì)返回Keyerror.
Example
Example 1
s = 'mississippi' d = defaultdict(int) for k in s: d[k] += 1 print(d)
Example 2
s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)] d = defaultdict(set) for k, v in s: d[k].add(v) print(d)
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python編程中運(yùn)用閉包時(shí)所需要注意的一些地方
這篇文章主要介紹了Python編程中運(yùn)用閉包時(shí)所需要注意的一些地方,文章來自國內(nèi)知名的Python開發(fā)者felinx的博客,需要的朋友可以參考下2015-05-05Python 實(shí)現(xiàn)引用其他.py文件中的類和類的方法
下面小編就為大家分享一篇Python 實(shí)現(xiàn)引用其他.py文件中的類和類的方法,具有的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04pandas讀取csv格式數(shù)據(jù)時(shí)header參數(shù)設(shè)置方法
本文主要介紹了pandas讀取csv格式數(shù)據(jù)時(shí)header參數(shù)設(shè)置方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02關(guān)于python3的ThreadPoolExecutor線程池大小設(shè)置
這篇文章主要介紹了關(guān)于python3的ThreadPoolExecutor線程池大小設(shè)置,線程池的理想大小取決于被提交任務(wù)的類型以及所部署系統(tǒng)的特性,需要的朋友可以參考下2023-04-04anaconda創(chuàng)建、查看、激活與刪除虛擬環(huán)境指令總結(jié)
在跑項(xiàng)目時(shí)常常會(huì)安裝很多的包,也通常會(huì)遇到需要安裝指定版本的包,以及包與包不兼容的問題,下面這篇文章主要給大家介紹了關(guān)于anaconda創(chuàng)建、查看、激活與刪除虛擬環(huán)境指令的相關(guān)資料,需要的朋友可以參考下2022-11-11Django 允許局域網(wǎng)中的機(jī)器訪問你的主機(jī)操作
這篇文章主要介紹了Django 允許局域網(wǎng)中的機(jī)器訪問你的主機(jī)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05Python中eval帶來的潛在風(fēng)險(xiǎn)代碼分析
這篇文章主要介紹了Python中eval帶來的潛在風(fēng)險(xiǎn)代碼分析,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12