📅  最后修改于: 2023-12-03 15:19:31.663000             🧑  作者: Mango
默认字典是Python中collections模块提供的一个容器字典类型。它是内置字典类(dict)的一个子类,具有额外的一些特性和方法。默认字典的主要特点是在创建时指定一个默认值,默认字典的键不存在时,返回该默认值而不是抛出KeyError异常。
默认字典的使用方法与内置字典类相似,在创建时需要传入一个默认值参数。创建默认字典的方式有两种:
使用defaultdict
函数:使用defaultdict(default_factory)
创建一个默认字典对象。default_factory
可以是Python内置类型、自定义函数或类。
from collections import defaultdict
# 使用Python内置类型作为默认值
d = defaultdict(list)
d[1].append("apple") # 添加键为1的值到列表中
d[2].append("banana") # 添加键为2的值到列表中
print(d[1]) # 输出: ['apple']
print(d[2]) # 输出: ['banana']
# 使用自定义函数作为默认值
def default_value():
return "unknown"
d = defaultdict(default_value)
print(d[3]) # 输出: 'unknown'
# 使用自定义类作为默认值
class DefaultClass:
def __init__(self):
self.value = "default"
d = defaultdict(DefaultClass)
print(d[4].value) # 输出: 'default'
扩展内置字典类:继承内置字典类,重写__missing__
方法,将默认值作为返回值。
class MyDefaultDict(dict):
def __missing__(self, key):
return "unknown"
d = MyDefaultDict()
print(d[5]) # 输出: 'unknown'
默认字典适用于处理字典的键不存在时的场景,例如统计单词出现的次数:
from collections import defaultdict
def count_words(sentence):
words = sentence.split()
word_count = defaultdict(int) # 默认值为0的默认字典
for word in words:
word_count[word] += 1
return dict(word_count) # 将默认字典转换为普通字典返回
sentence = "Hello world hello"
print(count_words(sentence)) # 输出: {'Hello': 1, 'world': 1, 'hello': 2}
默认字典是Python中一个实用的容器类型,它允许我们在处理字典时简化代码,不需要显式地检查键是否存在。默认字典的使用方法简单,可以通过defaultdict
函数创建或扩展内置字典类实现。它在各种场景下都能发挥作用,特别是在统计或计数方面的应用。