Python-collections模块之defaultdict
2021-03-03 10:26
标签:== set 默认 for循环 比较 htm 对象 cts 代码 defaultdict 是 dict 类型的子类,正如其名,初始化时,可以给key指定默认值,什么意思呢?直接看代码。 而使用defaultdict,可以给不存在的key给一个默认的初始值,例如: 关于defaultdict的一些应用场景: 参考:https://www.cnblogs.com/suguangti/p/13150567.html Python-collections模块之defaultdict 标签:== set 默认 for循环 比较 htm 对象 cts 代码 原文地址:https://www.cnblogs.com/leetcodesumup/p/14396132.htmldefaultdict
如果是普通的dict对象,访问一个不存在的key时,会报错:dict1 = dict()
print(dict1[‘a‘])
"""
Traceback (most recent call last):
File "D:/Projects/test/t1.py", line 14, in
默认空列表的dict:from collections import defaultdict
res1 = defaultdict(list)
print(res1[‘a‘]) # []
print(res1.get(‘a‘)) # []
print(res1.get(‘a‘, ‘hello world 1‘)) # []
场景一:我们经常想要将一个列表中的数据进行整合,比如这种:from collections import defaultdict
initial_data = [(‘class1‘, ‘张三‘), (‘class2‘, ‘李四‘), (‘class1‘, ‘王五‘),
(‘class3‘, ‘赵六‘), (‘class3‘, ‘李刚弹‘), (‘class2‘, ‘王大炮‘),
(‘class1‘, ‘王大锤‘), (‘class2‘, ‘李二狗‘), (‘class1‘, ‘佚名‘)
]
# ==> 变成:
finally_data = {
‘class1‘: [‘张三‘, ‘王五‘, ‘王大锤‘, ‘佚名‘],
‘class2‘: [‘李四‘, ‘王大炮‘, ‘李二狗‘, ],
‘class3‘: [‘赵六‘, ‘李刚弹‘]
}
# 如果自己实现的话可能会用for循环依次判断,又或者使用到setdefault方法也可以
# 这里如果使用defaultdict方法算是一种比较优雅的解决吧:
res5 = defaultdict(list)
for k, v in initial_data:
res5[k].append(v)
文章标题:Python-collections模块之defaultdict
文章链接:http://soscw.com/index.php/essay/59467.html