字典是Python中非常常用的數據結構,它可以非常快速地進行鍵值對的查找,但是當我們在向字典中添加元素時,會遇到鍵不存在的情況。這就導致了一些問題,需要我們不斷地檢測鍵是否存在,才能安心地進行操作。Python標準庫中的默認字典就是為了解決這個問題而出現的。
一、默認字典的概述
默認字典是Python標準庫collections中的一種數據類型,它繼承自字典,與普通字典主要的區別在於:當我們訪問一個不存在的鍵時,默認字典會給該鍵設置一個默認值,並返回該默認值。
from collections import defaultdict
dd = defaultdict(list)
print(dd['key1']) # 輸出 []
dd['key1'].append('value1')
print(dd['key1']) # 輸出 ['value1']
在上面的例子中,我們創建了一個默認字典dd,它的默認值是一個空列表。因為字典中沒有key1這個鍵,當我們調用print(dd[‘key1’])時,會返回一個空列表[],然後我們以普通字典的方式向該鍵添加了一個值’value1’,再次調用print(dd[‘key1’])時,它將返回[‘value1’]。
二、默認工廠函數
在創建默認字典對象時,我們需要指定一個默認工廠函數,它會在訪問一個不存在的鍵時被調用,並返回一個默認值。默認字典提供了4個內置的工廠函數,它們分別是:int、float、list和dict。
1、int:返回整數0。
dic = defaultdict(int)
print(dic['a']) # 輸出 0
2、float:返回浮點數0.0。
dic = defaultdict(float)
print(dic['a']) # 輸出 0.0
3、list:返回空列表[]。
dic = defaultdict(list)
print(dic['a']) # 輸出 []
4、dict:返回空字典{}。
dic = defaultdict(dict)
print(dic['a']) # 輸出 {}
三、自定義工廠函數
除了內置的工廠函數,我們還可以通過自定義工廠函數來指定默認值。自定義工廠函數需要返回一個默認值,可以是任何數據類型。我們可以通過在創建默認字典時,傳入一個函數來作為工廠函數。
def default_value():
return 'default value'
dic = defaultdict(default_value)
print(dic['a']) # 輸出 default value
當我們向默認字典中訪問一個鍵時,如果該鍵不存在,則默認工廠函數會被調用,並返回其返回值。在這個例子中,我們定義了一個自定義工廠函數default_value,它返回一個字符串”default value”。然後我們創建了一個字典dic,使用default_value作為該字典的默認工廠函數。因為字典中不存在鍵’a’,所以當我們調用print(dic[‘a’])時,會返回”default value”。
四、小結
默認字典是一個很實用的Python標準庫數據類型,它可以大大簡化字典操作中的代碼,避免了我們不斷地檢測鍵是否存在的問題。同時,Python的默認字典還提供了多種內置的工廠函數,可以方便地創建不同類型的默認字典對象。如果我們需要更多自定義的值作為默認值,可以通過自定義工廠函數來實現。使用默認字典可以使我們的代碼更加簡潔和高效。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/206718.html