在 Python 的標準庫中,有一個非常有用的數據結構工具叫做 defaultdict。它是 collections 模塊的一部分,提供了一種特殊的字典類型,可以在訪問不存在的鍵時返回一個默認值。本文將介紹 defaultdict 的用法,包括其基本語法、常見用例。
defaultdict 類的構造函數與普通字典的構造函數類似,但需要傳入一個默認工廠函數作為參數。默認工廠函數用于在訪問不存在的鍵時返回一個默認值。以下是 defaultdict 的基本語法:
from collections import defaultdictd = defaultdict(default_factory)
在上述代碼中,default_factory 是一個函數對象,用于定義默認值的生成規則。
一個常見的用例是使用 defaultdict 實現計數器。假設我們有一個列表,想要統計每個元素出現的次數。可以使用 defaultdict 來簡化代碼:
from collections import defaultdictcounter = defaultdict(int)data = [1, 2, 3, 1, 2, 3, 4, 5, 4, 3, 2, 1]for num in data: counter[num] += 1print(counter)
輸出:
defaultdict(<class 'int'>, {1: 3, 2: 3, 3: 3, 4: 2, 5: 1})
解析:在上述代碼中,我們創建了一個 defaultdict 對象 counter,并將 int 函數作為默認工廠函數。在遍歷列表 data 時,我們對 counter[num] 進行自增操作,由于初始時 counter 中不存在鍵 num,defaultdict 會自動使用 int 函數生成一個默認值 0,然后執行自增操作。最終,我們得到了每個元素出現次數的統計結果。
另一個常見的用例是使用 defaultdict 進行分組。假設我們有一個包含學生姓名和對應班級的列表,想要按班級將學生分組。可以使用 defaultdict 來實現:
from collections import defaultdictstudents = [('Alice', 'A'), ('Bob', 'B'), ('Charlie', 'A'), ('Dave', 'B')]grouped_students = defaultdict(list)for name, group in students: grouped_students[group].append(name)print(grouped_students)
輸出:
defaultdict(<class 'list'>, {'A': ['Alice', 'Charlie'], 'B': ['Bob', 'Dave']})
解析:在上述代碼中,我們創建了一個 defaultdict 對象 grouped_students,并將 list 函數作為默認工廠函數。在遍歷學生列表 students 時,我們將每個學生的姓名 name 添加到對應班級 group 的列表中。由于初始時 grouped_students 中不存在鍵 group,defaultdict 會自動使用 list 函數生成一個空列表,然后將學生姓名添加到列表中。最終,我們得到了按班級分組的學生列表。
defaultdict 是 Python 中一個非常實用的數據結構工具,可以在訪問不存在的鍵時返回一個默認值。通過使用 defaultdict,我們可以簡化代碼,提高效率,并且使代碼更加易讀。它特別適用于計數器和分組等常見場景。
本文鏈接:http://www.tebozhan.com/showinfo-26-44363-0.htmlPython 中的 defaultdict有什么用的?
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: IDC 中國制造數字供應鏈整體解決方案 2023 年廠商評估出爐 京東位于“領導廠商”象限
下一篇: Python 也能干大事,拷貝也有大學問