【python】14_defaultdict

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)

【python】14_defaultdict_第1张图片

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)

在这里插入图片描述

你可能感兴趣的:(python)