1.defaultdict简介
collections.defaultdict类,本身提供了默认值的功能, 默认值可以是整形,列表,集合等.
defaultdict 是 dict 的子类。但它与 dict 最大的区别在于,如果程序试图根据不存在的 key 访问 value,会引发KeyError 异常;而 defaultdict 提供default_factory 属性,为不存在的 key 来自动生成生成默认的 value。
需求:
我们想要一个能将键(key)映射到多个值的字典(即所谓的一键多值字典)
解决方案:
1). 字典是一种关联容器,每个键都映射到一个单独的值上。如果想让键映射到多个值,需要将这些多个值保存到容器(列表或者集合)中。
2). 利用collections模块中的defaultdict类自动初始化第一个值,这样只需关注添加元素.
from collections import defaultdict
info = defaultdict(int)
info['a'] += 1
print(info['a'])
info = defaultdict(list)
info['a'].append(1)
info['a'].append(2)
print(info['a'])
info = defaultdict(set)
info['a'].add(1)
info['b'].add(2)
print(info)
2.defaultdict练习
把list(随机生成50个1-100之间的随机数)中大于66的元素和小于66的元素,分别存放在字典中。
from collections import defaultdict
import random
nums = []
nums_dict = defaultdict(list)
for i in range(50):
nums.append(random.randint(1,100))
for item in nums:
if item > 66:
nums_dict['大于66的元素:'].append(item)
else:
nums_dict['小于66的元素:'].append(item)
print(nums_dict)