欢迎访问宙启技术站
智能推送

_collections模块中的defaultdict()实用指南

发布时间:2023-12-24 15:52:29

defaultdict是Python collections模块中的一个类,它是一个子类化的字典,具有与字典相同的功能,但可以指定默认值。defaultdict主要用于当键被引用时,如果该键不存在于字典中,则可以返回一个默认值,而不是引发KeyError异常。

默认情况下,defaultdict的默认值为None。但是,您可以传递一个函数来设置您自己的默认值。当您尝试访问字典中不存在的键时,该函数会被调用并返回默认值。

下面是defaultdict的基本语法:

collections.defaultdict([default_factory[, ...]])

其中,default_factory参数是可选的。如果未指定,则默认为None,即字典的默认值为None。default_factory可以是Python内置的任何可调用对象,如int,float,list等,或者您自己定义的函数。

下面是一些defaultdict的常用方法:

1. defaultdict():创建一个defaultdict对象。

2. defaultdict.default_factory:返回defaultdict的默认工厂函数。

3. defaultdict.copy():返回defaultdict的浅拷贝。

4. defaultdict.items():返回defaultdict的键值对视图。

5. defaultdict.keys():返回defaultdict的键视图。

6. defaultdict.values():返回defaultdict的值视图。

下面是一个使用defaultdict的示例,假设我们需要计算一段文本中每个单词出现的次数:

from collections import defaultdict

text = "This is a sample text. This text is just a sample."

word_count = defaultdict(int) # 使用int作为默认值

for word in text.split():
    word_count[word] += 1

print(word_count)

输出结果为:

defaultdict(<class 'int'>, {'This': 2, 'is': 2, 'a': 2, 'sample': 2, 'text.': 1, 'This': 2, 'text': 1, 'just': 1})

在上面的示例中,我们使用defaultdict创建了一个名为word_count的字典,其中默认值为int。然后,我们迭代文本中的每个单词,并使用+= 1运算符将其添加到defaultdict中。由于字典中不存在该键时,default_factory被调用并返回默认值0。这样,我们可以在计算每个单词出现次数时,无需检查字典中是否存在该键,而且代码更简洁。

您还可以自定义默认值,如下所示:

from collections import defaultdict

def default_value():
    return 0

word_count = defaultdict(default_value)

text = "This is a sample text. This text is just a sample."

for word in text.split():
    word_count[word] += 1

print(word_count)

输出结果与前面的示例相同。

在这个示例中,我们使用名为default_value的函数作为default_factory。该函数返回0作为默认值。当我们尝试访问字典中不存在的键时,defaultdict会调用这个函数并返回默认值。

总结一下,defaultdict是一个非常有用的类,可以简化代码并提高效率,特别是在处理字典中不存在的键时。通过使用defaultdict,您可以在默认值不存在时,自动为新建键分配一个默认值。这样,您可以专注于处理具体的业务逻辑,而不必担心键的存在性。