9 Collections模块下的defaultdict

 欢迎来到@一夜看尽长安花 博客,您的点赞和收藏是我持续发文的动力

对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论的问题可联系我:3329759426@qq.com 。发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

    专栏:

文章概述:对Collections模块下的defaultdict的介绍

关键词:Collections模块下的defaultdict

本文目录

Python之defaultdict,更高级的字典

my_dict = {}
my_dict = dict()
print(my_dict)
print(my_dict['age'])
my_dict['age'] += 10

使用普通的字典当键值对不存在的时候,取值会报错

用于初始化

from collections import defaultdict

my_dict = defaultdict(int)
print(my_dict)
print(my_dict['age']) # 这时即使没有键值对,也会给个默认值0
print(my_dict)

my_dict['some_other_value'] += 20
print(my_dict)

优点:

如果不使用defaultdict(int),那就必须初始化操作,而且如果键不存在就会报错

from collections import defaultdict
#常规初始化操作
values = {
  'person1':0,
  'person2':0,
  'person3':0,
}


values['person4'] += 10


values = defaultdict(int)
values['person4'] += 10

用于计数

使用了 defaultdict 来统计列表中每个元素的出现次数。defaultdictcollections 模块中的一个子类,它为字典提供了一个默认值。

from collections import defaultdict
mylist = [1,2,3,2,1,3,4,5,1,2]
counter = defaultdict(int)

for element in mylist:
  counter[str(element)] += 1
  
print(counter)

str(element) 将列表中的元素转换成字符串的格式,直接变成键

快捷键:Alt+ 1 显示项目列表(工具栏)

defaultdict用于分组统计_继承defaultdict实现自己的字典

grouped_words = defaultdict(list) 是 Python 中 collections 模块中 defaultdict 的一个用法,它用于创建一个默认字典,默认值是一个空列表 list

words = ['apple', 'banana', 'carrot', 'orange', 'beer']
#分组,默认值是list 空列表
grouped_words = defaultdict(list)

for word in words:
  #以首字母为键,追加值
  grouped_words[word[0]].append(word)
  
print(grouped_words)

tuple_list = [('A', 10), ('B', 4), ('A',5), ('C', 7), ('B', 1)]
grouped_data = defaultdict(list)

#按键分组,值以列表的形式组合
for key, value in tuple_list:
  grouped_data[key].append(value)
  
print(grouped_data)

#对值求和作为键对应的值
grouped_data = {k: sum(v) for k, v in grouped_data.items()}
print(grouped_data)

还可以封装自己的字典

#定义一个类,继承defaultdict类
class MyDefaultDict(defaultdict):

#重写missing的魔法方法
  def __missing__(self, key):
  #将key的大小赋给value和作为key对应的值
    self[key] = value = len(key)
    return value

test = MyDefaultDict(int)

print(test['Hello'])

print(test['Hi'])

print(test)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值