defaultdict

defaultdict 是 dict 类型的子类,正如其名,初始化时,可以给key指定默认值,什么意思呢?直接看代码。
如果是普通的dict对象,访问一个不存在的key时,会报错:

dict1 = dict()
print(dict1['a'])
"""
Traceback (most recent call last):
File "D:/Projects/test/t1.py", line 14, in <module>
print(dict1['a'])
KeyError: 'a'
"""

而使用defaultdict,可以给不存在的key给一个默认的初始值,例如:
默认空列表的dict:

from collections import defaultdict

res1 = defaultdict(list)
print(res1['a']) # []
print(res1.get('a')) # []
print(res1.get('a', 'hello world 1')) # []

关于defaultdict的一些应用场景:
场景一:我们经常想要将一个列表中的数据进行整合,比如这种:

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)

参考:https://www.cnblogs.com/suguangti/p/13150567.html

Python-collections模块之defaultdict的更多相关文章

  1. python collections模块 之 defaultdict

    defaultdict 是 dict 的子类,因此 defaultdict 也可被当成 dict 来使用,dict 支持的功能,defaultdict 基本都支持.但它与 dict 最大的区别在于,如 ...

  2. (转)python collections模块详解

    python collections模块详解 原文:http://www.cnblogs.com/dahu-daqing/p/7040490.html 1.模块简介 collections包含了一些特 ...

  3. Python collections模块总结

    Python collections模块总结 除了我们使用的那些基础的数据结构,还有包括其它的一些模块提供的数据结构,有时甚至比基础的数据结构还要好用. collections ChainMap 这是 ...

  4. python collections模块

    collections模块基本介绍 collections在通用的容器dict,list,set和tuple之上提供了几个可选的数据类型 namedtuple() factory function f ...

  5. Python collections 模块用法举例

    Python作为一个“内置电池”的编程语言,标准库里面拥有非常多好用的模块.比如今天想给大家 介绍的 collections 就是一个非常好的例子. 1.collections模块基本介绍 我们都知道 ...

  6. Python——collections模块、time模块、random模块、os模块、sys模块

    1. collections模块 (1)namedtuple # (1)点的坐标 from collections import namedtuple Point = namedtuple('poin ...

  7. Python——collections模块

    collections模块 collections模块在内置数据类型(dict.list.set.tuple)的基础上,还提供了几个额外的数据类型:ChainMap.Counter.deque.def ...

  8. python collections模块详解

    参考老顽童博客,他写的很详细,例子也很容易操作和理解. 1.模块简介 collections包含了一些特殊的容器,针对Python内置的容器,例如list.dict.set和tuple,提供了另一种选 ...

  9. python collections module's defaultdict

    Collections is a high-performance container datatypes. defaultdict objects class collections.default ...

  10. Python——collections模块(扩展数据类型)

    1.namedtuple:利用坐标.空间坐标,扑克牌等指定空间位置 # namedtuple('名字',[list列表属性])from collections import namedtuple Po ...

随机推荐

  1. vue href url地址写法

  2. Junit测试和反射

    Junit单元测试 测试分类 黑盒测试:不需要写代码,给输入值,看程序能否得到输出期望值. 白盒测试:需要些代码,关注程序具体的执行流程. Junit的使用 步骤 定义一个测试类(测试用例). 定义测 ...

  3. unity3D进阶

    前言 在之前的例子中,我们都没有用到unity的精髓,例如地形系统.物理系统.粒子系统等,本文记录unity3D的进阶简单应用 前期准备 https://unity.cn/releases/full/ ...

  4. windows上传ipa到苹果开发者中(app store)的方法

    假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开发者中心才能在构建版本里选择构建版本上架 ...

  5. C++中输出变量类型的方法

    C++中输出变量类型的方法 在c++中输出变量或者数据类型,使用typeid().name()的方法.如下例子: #include <iostream> #include <stri ...

  6. Linux系统设置 SSH 通过密钥登录

    我们一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器.但是,一般的密码方式登录,容易有密码被暴力破解的问题.所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者 ...

  7. Mybatis总结(一)

    Mybatis总结(一) 一.Mybatis启动流程(代码层面) 关于config.xml <?xml version="1.0" encoding="UTF-8& ...

  8. IDEA安装问题解决

    一,安装正确的jdk和idea版本 首先在控制面查看电脑位数,电脑是64位的,安装64位的jdk和idea 二.打开正常的快捷键 有两个启动项,打开对应位数的 三,权限问题 如果弹出不能加载jvm的提 ...

  9. redis 主从复制 和集群

    redis集群最少三个节点 之间相互通信ping-pong 投票选举机制 主从复制 的话 最少六个节点 ,主三从三

  10. WPF和MVVM的结合使用方法,不可错过

    Model:存储数据模型(类) 也在此业务逻辑,主要负责类文件的存储. ViewModel:连接View和Model,借助Command来负责界面的跳转和调用Model中方法来操作Model的数据. ...