📜  Python中的默认字典(1)

📅  最后修改于: 2023-12-03 15:19:31.663000             🧑  作者: Mango

Python中的默认字典

介绍

默认字典是Python中collections模块提供的一个容器字典类型。它是内置字典类(dict)的一个子类,具有额外的一些特性和方法。默认字典的主要特点是在创建时指定一个默认值,默认字典的键不存在时,返回该默认值而不是抛出KeyError异常。

使用方法

默认字典的使用方法与内置字典类相似,在创建时需要传入一个默认值参数。创建默认字典的方式有两种:

  1. 使用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'
    
  2. 扩展内置字典类:继承内置字典类,重写__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函数创建或扩展内置字典类实现。它在各种场景下都能发挥作用,特别是在统计或计数方面的应用。