Python - AI 助手

Python collections.defaultdict



Python 的 `defaultdict()` 是一個容器,類似於 `字典`。它位於 `collections` 模組中。它是字典類的子類,返回一個 `字典` 物件。

字典和 defaultdict 的功能相似,唯一的區別是 defaultdict 不會引發 `KeyError`。它為不存在的鍵提供一個預設值。

語法

以下是 Python `defaultdict()` 類的語法:

defaultdict(default_factory)

引數

以下是此類接受的引數:

  • `default_factory`:這是一個函式,它為定義的字典返回一個預設值。如果未傳遞此引數,則函式會引發 KeyError。

返回值

此類返回一個 `` 物件。

示例

以下是 Python `defaultdict()` 類的基本示例:

from collections import defaultdict
def default():
   return 'Key not found'

dic1 = defaultdict(default)
dic1[1] = 'one'
dic1[2] = 'two'
dic1[3] = 'Three'
print(dic1)
print(dic1[5])

以上程式碼的輸出如下:

defaultdict(<function default at 0x000002040ACC8A40>, {1: 'one', 2: 'two', 3: 'Three'})
Key not found

使用帶 `__missing__()` 方法的 defaultdict()

`__missing__()` 方法用於定義作為 defaultdict() 引數傳遞的 default_factory 的行為。如果 `default_factory` 為 `None`,則此方法會生成一個 `KeyError`。

示例

以下是帶有 `__missing__()` 方法的 defaultdict() 示例:

from collections import defaultdict
def default():
   return 'Key not found'

#defined defaultdict
dic1 = defaultdict(default)
dic1[1] = 'Python'
dic1[2] = 'Java'
dic1[3] = 'C++'
print(dic1)
#__missing__() function
var1 = dic1.__missing__(1)
print(var1)

以上程式碼的輸出如下:

defaultdict(<function default at 0x000001F92A5F8A40>, {1: 'Python', 2: 'Java', 3: 'C++'})
Key not found

列表作為 default_factory

在 defaultdict() 中,我們可以將 `列表` 作為 default_factory 傳遞。當我們嘗試查詢字典中不存在的鍵的值時,它將返回一個空列表。

示例

在這裡,我們定義了一個元組列表,每個元組包含兩個值,鍵和值。我們將列表作為引數傳遞給 defaultdict() 函式並將專案追加到字典中:

# Python program to demonstrate
# defaultdict
from collections import defaultdict
s = [('Python', 90), ('Java', 85), ('Python', 75), ('C++', 80), ('Java', 120)]
dict1 = defaultdict(list)
for k, v in s:
   dict1[k].append(v)

sorted(dict1.items())
print(dict1)
print("Key is not present in the dictionary :",dict1['html'])

以上程式碼的輸出如下:

defaultdict(<class 'list'>, {'Python': [90, 75], 'Java': [85, 120], 'C++': [80]})
[]

整數作為 default_factory

在 defaultdict() 中,當我們可以將 `int` 作為引數傳遞時,它使函式可計數。當我們嘗試查詢字典中不存在的鍵時,它將返回 `零`。

示例

在這裡,我們將字元追加到字典中,當我們找到字典中不存在的鍵值時,結果為 `0`:

from collections import defaultdict
var1 = 'Hello'
dict1 = defaultdict(int)
for k in var1:
   dict1[k] += 1

sorted(dict1.items())
print(dict1)
#Value of key which is not found in dictionary
print("Key Value :", dict1['k'])

以上程式碼的輸出如下:

defaultdict(<class 'int'>, {'H': 1, 'e': 1, 'l': 2, 'o': 1})
Key Value : 0
python_modules.htm
廣告