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
广告