下面是关于“python 中defaultdict()对字典进行初始化的用法介绍”的详细攻略:
什么是 defaultdict()
在Python中,我们经常需要使用字典(dict)这个数据结构,字典是一个无序的键值对(key-value)集合,每个键都不同,且可以通过键来访问其对应的值。但是,当我们要使用一个没有初始化的字典时,如果该字典中的键还不存在时(类似于空缺),那么我们会遇到一个 KeyError,导致程序崩溃。这时就需要使用 defaultdict() 进行字典的初始化了。
defaultdict是python内置模块collections中的类,它的一个重要特点就是支持默认值。当我们使用 defaultdict() 初始化一个空字典时(我们在初始化时要传入一个默认值参数),如果在字典中查询一个不存在的key,它就会返回这个默认值,而不是一堆错误。
defaultdict()的参数
defaultdict()的唯一一个参数是default_factory,可以是一个函数/类类型/字符串等,它定义了默认值的类型和值。当我们使用字典时,如果字典中不存在查询的key值,那么程序不会报错而是直接创建一个默认值并返回,这个默认值可以在 defaultdict() 的调用时定义。
defaultdict()的用法
首先,我们需要导入collections模块中的defaultdict类:
from collections import defaultdict
接下来,我们创建一个 defaultdict 对象,并将一个列表作为默认值:
numbers = defaultdict(list)
这个列表可以作为所有缺失键的默认值。我们可以像使用普通字典一样使用 defaultdict。
例如,我们添加两个新键,然后在尝试访问一个不存在的键时,它会返回一个新的空列表。
numbers['one'].append(1)
numbers['two'].append(2)
numbers['three'].append(3)
print(numbers['one'])
# output: [1]
print(numbers['four'])
# output: []
我们还可以将默认值设置为int,类似于下面这样:
counts = defaultdict(int)
这样做可以在尝试访问不存在的键时返回0,例如:
counts['one'] += 1
counts['two'] += 2
counts['three'] += 3
counts['four'] += 4
print(counts)
# output: defaultdict(<class 'int'>, {'one': 1, 'two': 2, 'three': 3, 'four': 4})
defaultdict()的示例
下面给出一个 defaultdict() 的示例,用于统计每个词出现的次数:
from collections import defaultdict
words = [
'apple', 'banana', 'orange',
'apple', 'banana', 'banana',
'orange', 'orange', 'orange'
]
word_count = defaultdict(int)
for word in words:
word_count[word] += 1
print(word_count)
# output: defaultdict(<class 'int'>, {'apple': 2, 'banana': 3, 'orange': 4})
在这个示例中,我们将 defaultdict() 初始化为一个int类型,表示默认值为0,然后遍历给定的单词列表,对每个单词进行计数。如果一个单词在字典中不存在,那么它的默认值将自动为0,然后我们可以简单地将次数加1。
最后输出字典中每个单词出现的次数。
另外一个示例是,我们可以使用 defaultdict() 来寻找字符串中出现次数最多的字符。代码如下:
from collections import defaultdict
string = 'abacdddefg'
char_count = defaultdict(int)
for char in string:
char_count[char] += 1
most_frequent_char, count = max(char_count.items(), key=lambda x: x[1])
print(f'The most frequent character is "{most_frequent_char}", which appears {count} times.')
# output: The most frequent character is "d", which appears 3 times.
在这个例子中,我们首先用 defaultdict() 创建了一个计数字典,将每个字符的出现次数增加1。然后,我们使用 Python内置函数max()查找char_count.items()中出现次数最多的项目,并返回其键和值作为元组,其中 lambda函数根据每个项目的值进行排序。最后我们输出出现最频繁的字符和其出现次数。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 中defaultdict()对字典进行初始化的用法介绍 - Python技术站