python中defaultdict的用法

初識defaultdict

以前在使用字典的時候, 用的比較隨意, 只是簡單的使用dict.
然而這樣在使用不存在的key的時候發生KeyError這樣的一個報錯, 這時候就該defaultdict登場了.python

如何使用defaultdict

能夠這樣函數

from collections import defaultdict

d1 = defaultdict(int)

或者這樣code

import collections

d1 = collections.defaultdict(int)

defaultdict與dict實例化字典類型的區別

使用defaultdict任何未定義的key都會默認返回一個根據method_factory參數不一樣的默認值, 而相同狀況下dict()會返回KeyError.
比較下面代碼:ip

d1 = dict()
d2 = defaultdict(list)
print(d1['a'])
print(d2['a'])

defaultdict的構造

python官方文檔中對defaultdict的定義以下:文檔

class collections.defaultdict([default_factory[, ...]])

python官方文檔中對defaultdict的解釋以下:io

defaultdic
dict subclass that calls a factory function to supply missing values

default_factory 接收一個工廠函數做爲參數, 例如int str list set等.
defaultdict在dict的基礎上添加了一個__missing__(key)方法, 在調用一個不存的key的時候, defaultdict會調用__missing__, 返回一個根據default_factory參數的默認值, 因此不會返回Keyerror.function

Example

Example 1class

s = 'mississippi'
d = defaultdict(int)
for k in s:
    d[k] += 1
print(d)

Example 2import

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)
相關文章
相關標籤/搜索