欢迎来到@一夜看尽长安花 博客,您的点赞和收藏是我持续发文的动力
对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论的问题可联系我: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
来统计列表中每个元素的出现次数。defaultdict
是 collections
模块中的一个子类,它为字典提供了一个默认值。
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)