defaultdict是Python內置模塊collections中的一個類,可以用來創建一個字典,當訪問不存在的鍵時,返回一個默認值。與普通的dict不同,defaultdict不需要為每個新的鍵指定默認值,而是在初始化時指定。
一、基本使用
使用defaultdict要先導入collections模塊:
from collections import defaultdict
定義一個defaultdict對象:
fruits = defaultdict(int)
這裡我們定義了一個名為fruits的defaultdict對象,使用int作為默認值,在訪問不存在的鍵時將返回0。我們可以像使用字典一樣使用該對象:
fruits['apple'] += 2
fruits['orange'] += 3
現在fruits字典中已經有了鍵’apple’和’orange’,並且它們對應的值分別為2和3。
二、自定義默認值函數
除了使用簡單的類型值作為默認值,我們還可以使用函數來定義默認值。這個函數會在訪問不存在的鍵時被調用,並且應該返回一個默認值。
比如,我們可以使用自定義函數作為默認值,在訪問不存在的鍵時返回一個空列表:
def create_list():
return []
fruit_list = defaultdict(create_list)
fruit_list['apple'].append('red')
fruit_list['banana'].append('yellow')
現在fruit_list包含兩個鍵’apple’和’banana’,他們的值分別為[‘red’]和[‘yellow’]。
三、使用lambda表達式設置默認值
除了定義函數,我們還可以使用lambda表達式作為默認值:
fruit_list = defaultdict(lambda: [])
fruit_list['apple'].append('red')
fruit_list['banana'].append('yellow')
這樣也能得到和上面的代碼一樣的效果。
四、嵌套的defaultdict
我們可以在defaultdict中定義一個嵌套的defaultdict。這個功能可以很方便地創建嵌套字典,並在訪問不存在的鍵時自動創建嵌套字典的鍵。
例如我們可以創建一個名為city_population的字典,其中每個城市都有一個嵌套字典,嵌套字典的鍵為’year’和’population’:
city_population = defaultdict(lambda: defaultdict(int))
city_population['beijing']['year'] = 2020
city_population['beijing']['population'] = 21.54
city_population['shanghai']['year'] = 2020
city_population['shanghai']['population'] = 24.28
現在city_population中包含兩個鍵’beijing’和’shanghai’,並且它們的值分別是一個嵌套字典,該嵌套字典中包含鍵’year’和’population’以及對應的值。
五、結語
以上就是defaultdict的幾種常用設置默認值的方法,使用defaultdict能夠讓我們的代碼更加簡潔明了。除此之外,defaultdict還支持其他一些高級特性,可以在官方文檔中查看。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/199272.html