Python标准库defaultdict模块使用示例( 二 )


下面是一个示例:
```python
from collections import defaultdict
# 定义一个函数,统计单词出现的次数
def count_words(text):
# 创建一个defaultdict,指定默认值类型为int
word_counts = defaultdict(int)
# 将text按空格分割,得到单词列表
【Python标准库defaultdict模块使用示例】words = text.split()
# 遍历单词列表,统计每个单词出现的次数
for word in words:
word_counts[word] += 1
return word_counts
# 调用count_words函数,统计单词出现的次数
text = 'this is a test text this is a test text'
word_counts = count_words(text)
# 打印word_counts,结果是defaultdict(, {'this': 2, 'is': 2, 'a': 2, 'test': 2, 'text': 2})
print(word_counts)
```
在上面的代码中,我们定义了一个名为count_words的函数,它会统计单词出现的次数 。在函数中,我们创建了一个defaultdict,并指定默认值类型为int 。然后将text按空格分割,得到单词列表,遍历单词列表,统计每个单词出现的次数,最后返回一个字典,其中key是单词,value是单词出现的次数 。
(2)分组
在数据分析中,我们通常需要将数据按照某个属性进行分组 。使用defaultdict可以方便地完成这个任务 。
下面是一个示例:
```python
from collections import defaultdict
# 定义一个函数,按照国家分组
def group_by_country(data):
# 创建一个defaultdict,指定默认值类型为list
groups = defaultdict(list)
# 遍历数据,按照国家将数据分组
for item in data:
country = item['country']
groups[country].append(item)
return groups
# 调用group_by_country函数,按照国家分组
data = https://www.ycpai.cn/python/[
{'name': 'Alice', 'age': 20, 'country': 'USA'},
{'name': 'Bob', 'age': 21, 'country': 'China'},
{'name': 'Charlie', 'age': 22, 'country': 'USA'},
{'name': 'David', 'age': 23, 'country': 'China'}
]
groups = group_by_country(data)
# 打印groups,结果是defaultdict(, {'USA': [{'name': 'Alice', 'age': 20, 'country': 'USA'}, {'name': 'Charlie', 'age': 22, 'country': 'USA'}], 'China': [{'name': 'Bob', 'age': 21, 'country': 'China'}, {'name': 'David', 'age': 23, 'country': 'China'}]})
print(groups)
```
在上面的代码中,我们定义了一个名为group_by_country的函数,它会按照国家将数据分组 。在函数中,我们创建了一个defaultdict,并指定默认值类型为list 。然后遍历数据,按照国家将数据分组,最后返回一个字典,其中key是国家,value是国家对应的数据列表 。
(3)缓存
在计算密集型任务中,我们经常需要将计算结果缓存起来,以便下次使用 。使用defaultdict可以方便地实现缓存功能 。
下面是一个示例:
```python
from collections import defaultdict
# 定义一个函数,计算斐波那契数列
def fibonacci(n):
if n < 2:
return n
else:
return fibonacci(n - 1) + fibonacci(n - 2)
# 创建一个defaultdict,指定默认值类型为int
cache = defaultdict(int)
# 定义一个函数,计算斐波那契数列并缓存结果
def fibonacci_cached(n):
if n in cache:
return cache[n]
else:
result = fibonacci(n)
cache[n] = result
return result
# 调用fibonacci_cached函数,计算斐波那契数列并缓存结果
print(fibonacci_cached(10))
print(fibonacci_cached(10))
print(fibonacci_cached(11))
```
在上面的代码中,我们定义了一个名为fibonacci的函数,它用来计算斐波那契数列 。然后创建了一个defaultdict,并指定默认值类型为int 。接着定义了一个名为fibonacci_cached的函数,它用来计算斐波那契数列并缓存结果 。在函数中,首先判断是否已经有缓存结果,如果有,直接返回缓存结果;如果没有,计算斐波那契数列并将结果缓存起来,然后返回计算结果 。

推荐阅读