📅  最后修改于: 2023-12-03 15:14:39.870000             🧑  作者: Mango
在 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
可以更加方便地处理这种情况。