📜  defaultdict 键存在 - Python (1)

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

defaultdict 键存在 - Python

在 Python 中,defaultdict 是一个非常有用的数据结构。它是 dict 的子类,可以通过给定一个默认的工厂函数来返回一个默认值,当访问不存在的键时,将自动使用默认值初始化该键。

语法

默认字典的语法如下:

from collections import defaultdict

d = defaultdict(default_factory)

其中 default_factory 是一个工厂函数,用于生成默认值。如果不定义 default_factory,则默认值是 None

示例

下面是一个示例程序:

from collections import defaultdict

d = defaultdict(int)
d['a'] += 1
d['b'] += 2
d['c'] += 3

print(d)

输出结果如下:

defaultdict(<class 'int'>, {'a': 1, 'b': 2, 'c': 3})
应用场景

defaultdict 可以应用于许多场景,例如计数器、分组、构建字典等。

计数器

下面是一个使用 defaultdict 实现的计数器程序:

from collections import defaultdict

text = 'this is a sample text'

d = defaultdict(int)
for word in text.split():
    d[word] += 1

print(d)

输出结果如下:

defaultdict(<class 'int'>, {'this': 1, 'is': 1, 'a': 1, 'sample': 1, 'text': 1})
分组

defaultdict 还可以用于分组操作。例如,下面是一个将列表按首字母分组的程序:

from collections import defaultdict

data = ['apple', 'banana', 'cherry', 'date', 'elderberry', 'fig']

d = defaultdict(list)
for word in data:
    d[word[0]].append(word)

print(d)

输出结果如下:

defaultdict(<class 'list'>, {'a': ['apple'], 'b': ['banana'], 'c': ['cherry'], 'd': ['date'], 'e': ['elderberry'], 'f': ['fig']})
构建字典

当在构建字典时,如果键不存在,则会抛出 KeyError 异常。但是,如果使用 defaultdict,可以更加方便地构建字典。例如,下面是一个使用 defaultdict 构建字典的程序:

from collections import defaultdict

data = [('a', 1), ('b', 2), ('c', 3), ('a', 4), ('b', 5), ('c', 6)]

d = defaultdict(list)
for key, value in data:
    d[key].append(value)

print(d)

输出结果如下:

defaultdict(<class 'list'>, {'a': [1, 4], 'b': [2, 5], 'c': [3, 6]})
总结

defaultdict 是 Python 中一个非常有用的数据结构,可以应用于许多场景,例如计数器、分组、构建字典等。如果没有默认值,访问不存在的键将会抛出 KeyError 异常,而使用 defaultdict 可以更加方便地处理这种情况。