python学习积累七

在Python中,defaultdictcollections模块中的一个类,它提供了字典的一个子类,该类会为任何未找到的键提供一个默认值。这在你需要创建一个字典,其中某些键可能不存在但你又希望它们有一个默认值时非常有用。

要使用defaultdict,你首先需要导入它,然后像创建普通字典一样创建它,但你需要提供一个工厂函数作为defaultdict的第一个参数。这个工厂函数描述了当你尝试访问一个不存在的键时应该返回什么默认值。最常见的工厂函数是intfloatlistset等,或者任何返回一个新对象的函数。

下面是一些使用defaultdict的例子:

例子 1: 使用int作为默认值

 

python复制代码

from collections import defaultdict
# 创建一个defaultdict,其默认值为0
dd = defaultdict(int)
# 添加一个键值对
dd['a'] = 1
# 尝试访问一个不存在的键,它会自动返回默认值0
print(dd['b']) # 输出: 0
# 也可以直接给不存在的键赋值,而不需要事先检查它是否存在
dd['c'] += 1
print(dd['c']) # 输出: 1

例子 2: 使用list作为默认值

 

python复制代码

from collections import defaultdict
# 创建一个defaultdict,其默认值为一个空列表
dd = defaultdict(list)
# 向键'a'对应的列表中添加元素
dd['a'].append(1)
dd['a'].append(2)
# 访问键'b',它将自动返回一个空列表
print(dd['b']) # 输出: []

例子 3: 使用自定义函数作为默认值

 

python复制代码

from collections import defaultdict
# 定义一个返回新字典的函数
def dict_factory():
return {'count': 0, 'sum': 0}
# 创建一个defaultdict,其默认值为上述函数返回的新字典
dd = defaultdict(dict_factory)
# 给键'a'对应的字典添加数据
dd['a']['count'] += 1
dd['a']['sum'] += 10
# 访问键'b',它将自动返回由dict_factory函数创建的新字典
print(dd['b']) # 输出: {'count': 0, 'sum': 0}

defaultdict在处理数据并希望为缺失的键提供默认值时非常有用,它可以简化代码并避免在访问字典时引发KeyError异常。通过提供默认值,你可以更直接地操作数据,而无需事先检查键是否存在。

#eg:寻找一个最大的数字m,使得m!(m的阶乘)是数组A中所有数字的阶乘之和的因数
from collections import defaultdict
n=int(input())
A=list(map(int,input().split()))
A.sort()
b=defaultdict(int)#默认b中value都为整数0
for i in range(len(A)):
  b[A[i]]=A.count(A[i])
m=A[0]
while 1:
  if b[m]%(m+1)==0:
    b[m+1]+=b[m]//(m+1)
    m=m+1
  else:
    break
print(m)

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值