下面是“Python中defaultdict的用法详解”的完整攻略。
什么是defaultdict
在Python中,defaultdict是一个字典子类,它覆盖了一些基本字典的方法,允许我们为字典中缺少的键提供默认值。 当我们使用一个没有被收录到字典中的键的时候,defaultdict会自动为这个键创建一个默认值。
默认值可以是int, list, dict, tuple, set等等。在defaultdict函数中我们需要提供一个callable对象用来作为key对应的value的默认值。
默认值可以通过default_factory参数设置。
defaultdict的用法
首先需要引入库
from collections import defaultdict
创建defaultdict
创建一个defaultdict的方法与创建一个普通字典的方法很类似,只需将指定默认值的类型传入defaultdict构造函数中即可,具体的语法如下:
defaultdict([default_factory[, ...]])
下面是一个创建int类型默认值的示例:
d = defaultdict(int)
当调用d不存在的key时,它会返回默认值0。
可以通过设置default_factory参数来指定其他类型的默认值,例如:
d = defaultdict(list)
当调用d不存在的key时,它会返回一个空列表。
同样,可以使用lambda表达式来设置自定义的默认值,例如:
d = defaultdict(lambda: 'N/A')
当调用d不存在的key时,它会返回值为“N/A”(注意:这里的“N/A”只是一个示例字符串,我们也可以返回其他的默认值类型)。
添加元素
添加元素的方法与普通字典一样,可以使用中括号[]的语法添加元素,例如:
d = defaultdict(int)
d['a'] += 1
d['b'] += 2
d['c'] += 3
print(d) # defaultdict(<class 'int'>, {'a': 1, 'b': 2, 'c': 3})
在上面的例子中,我们通过将'int'传递给defaultdict函数,创建了一个默认值为0的dictionary对象,然后通过中括号语法向其中添加元素。
使用示例:统计单词出现次数
下面是一个常见的使用defaultdict的例子,假设我们要统计一个文本文件中每个单词出现的次数,具体做法如下:
import re
from collections import defaultdict
def word_count(filepath):
# 读取文件并切分为单词
with open(filepath) as f:
words = re.findall(r'\w+', f.read().lower())
# 统计单词出现次数
word_count_dict = defaultdict(int)
for word in words:
word_count_dict[word] += 1
# 输出结果
for word, count in word_count_dict.items():
print(word, count)
word_count('example.txt')
上述代码读取example.txt文件中的单词,使用defaultdict统计单词出现的次数,并输出结果。
使用示例:按首字母将单词分类
下面是一个使用defaultdict将单词按首字母分类的示例,具体做法如下:
from collections import defaultdict
words = ['apple', 'banana', 'cherry', 'date', 'elderberry', 'fig', 'grape']
words_by_first_letter = defaultdict(list)
for word in words:
words_by_first_letter[word[0]].append(word)
print(words_by_first_letter)
上述代码先定义一个words列表,包含了一些单词,然后使用defaultdict将这些单词按首字母分类并输出结果。
总结
通过在Python中使用defaultdict,可以很方便地为字典中缺少的键提供默认值。我们可以通过指定default_factory的方式来设置默认值的类型,也可以通过使用lambda表达式来设置更复杂的默认值。defaultdict常用于各种需要用到字典的场景中,例如统计单词出现次数、按首字母将单词分类等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中defaultdict的用法详解 - Python技术站