1.collections.defaultdict 类

from collections import defaultdict

2.collections.defaultdict 类与工厂函数dict比较:

(1) 众所周知,在Python中如果访问dict字典中不存在的键,会引发KeyError异常。但是有时候,字典中的每个键都存在默认值是非常方便的。defaultdict可以避免KeyError异常。

 # 1-dict()
strings = ('puppy', 'kitten', 'puppy', 'puppy',
'weasel', 'puppy', 'kitten', 'puppy')
counts = {}
for kw in strings:
counts[kw] += 1 # 报错
#Traceback (most recent call last):
# File "C:\Users\summer\Desktop\demo.py", line 5, in <module>
# counts[kw] += 1
#KeyError: 'puppy' # 2-defaultdict()
from collections import defaultdict strings = ('puppy', 'kitten', 'puppy', 'puppy',
'weasel', 'puppy', 'kitten', 'puppy')
counts = defaultdict(int)
for kw in strings:
counts[kw] += 1 print(counts) # defaultdict(<class 'int'>, {'puppy': 5, 'kitten': 2, 'weasel': 1})

(2)default_factory 接收一个工厂函数作为参数, 例如int str list set等.

defaultdict类的初始化函数接受一个类型作为参数,当所访问的键不存在的时候,可以实例化一个值作为默认值默认值的类型由工厂函数决定。

from collections import defaultdict

dic1 = defaultdict(int)
print(dic1['a']) dic2 = defaultdict(list)
print(dic2['a']) dic3 = defaultdict(dict)
print(dic3['a']) #
# []
# {}

(3)返回的是工厂函数的实例,那么就具有了该工厂函数的相应方法。

最新文章

  1. 【.net 深呼吸】记录WCF的通信消息
  2. Deactivate .NET refector
  3. 解决方案:将已存在的项目 添加到 tfs解决方案中的时候 出现:新项目不能成功加入源码控制
  4. Spark Tungsten揭秘 Day2 Tungsten-sort Based Shuffle
  5. [BZOJ 4033] [HAOI2015] T1 【树形DP】
  6. 在SQL中使用PL/SQL函数存在的问题
  7. 查看ASM 使用率
  8. 前端中的SEO
  9. javaScript 工作必知(二) null 和undefined
  10. justAP1.3.0版发布了
  11. Iphone CPU 架构类型
  12. python基础(二)字符串內建函数详解
  13. 利用 CURL 发送JSON格式字符串
  14. ssh登录locale报错:cannot change locale (zh_CN.UTF-8): No such file or directory
  15. 数据库查询的数据导出到xls表,集合数据导出到xls表
  16. 模态推出 全屏 隐藏tabbar
  17. Artech的MVC4框架学习——第二章URL路由
  18. 1.python的一些规范
  19. 20155338《网络对抗技术》 Exp1 PC平台逆向破解
  20. Docker 搭建 etcd 集群配置

热门文章

  1. mysql中@ROW的使用
  2. 偏向锁,偏向线程id ,自旋锁
  3. HTTP请求方式: GET和POST的比较
  4. linux装mysql
  5. Ubuntu下使用git clone 的权限问题解决方法
  6. 解决 Failed to load class &quot;org.slf4j.impl.StaticLoggerBinder&quot;
  7. 用python编写排序算法
  8. 前端学习(三十)es6的一些问题(笔记)
  9. ORA-20782: Creating GGS_DDL_RULES
  10. vue+cesiumjs环境搭建【import引入】