collections.defaultdict()的使用
这里的defaultdict(function_factory)构建的是一个类似dictionary的对象,其中keys的值,自行确定赋值,但是values的类型,是function_factory的类实例,而且具有默认值。
使用list作第一个参数,可以很容易将键-值对序列转换为列表字典。
1 import collections
2 s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
3
4 d = collections.defaultdict(list)
5 for k, v in s:
6 d[k].append(v)#这里的结构是k:[] 所以这里可以append
7
8
9 print(d.items())
10
11 print(d["aaa"]) #获取不存在的key并不会报错
输出:
dict_items([('yellow', [1, 3]), ('blue', [2, 4]), ('red', [1])])
[]
dict_items 统计”yellow” 的所有v的值, d[“aaa”] 没有此key返回空列表
字典也有类似功能:
1 s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
2 d={}
3 for k, v in s:
4 d.setdefault(k,[]).append(v)
5
6 print(d.items())
这个方法便捷性差一些 dict.setdefault()
defaultdict计数,将default_factory设为int即可
1 from collections import defaultdict
2 s = 'mississippiasdjklajskdlzxzxcmasdasdzxc'
3 d = defaultdict(int)
4
5 for k in s:
6 d[k] += 1
7
8 print(d.items())
结果:
dict_items([('m', 2), ('i', 4), ('s', 8), ('p', 2), ('a', 4), ('d', 4), ('j', 2), ('k', 2), ('l', 2), ('z', 3), ('x', 3), ('c', 2)])
字符串中的字母第一次出现时,字典中没有该字母,default_factory函数调用int()为其提供一个默认值0,加法操作将计算出每个字母出现的次数。
使用函数返回
此函数不能带参数
1 from collections import defaultdict
2 def constant_factory(value):
3 return lambda: 0
4 d = defaultdict(constant_factory(s))
5
6 print(d["aaa"])
结果
0
使用lambda来完成统计
1 from collections import defaultdict
2 s = 'mississippiasdjklajskdlzxzxcmasdasdzxc'
4 counter = defaultdict(lambda: 0)
5 for kw in s:
6 counter[kw] += 1
collections.defaultdict()的使用的更多相关文章
- python collections defaultdict
class_counts = defaultdict(int) 一.关于defaultdict 在Python里面有一个模块collections,解释是数据类型容器模块.这里面有一个collect ...
- Python collections.defaultdict 笔记
其实defaultdict 就是一个字典,只不过python自动的为它的键赋了一个初始值.这也就是说,你不显示的为字典的键赋初值python不会报错,看下实际例子. 比如你想计算频率 frequenc ...
- Python collections.defaultdict() 与 dict的使用和区别
看样子这个文档是难以看懂了.直接看示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import collections s = [('yellow', ...
- Python: dict setdault函数与collections.defaultdict()的区别
setdault用法 >>>dd={'hy':1,'hx':2} >>>cc=dd.setdefault('hz',1) >>>cc 返 ...
- (转)Python 3 collections.defaultdict() 与 dict的使用和区别
原文:https://www.cnblogs.com/herbert/archive/2013/01/09/2852843.html 在Python里面有一个模块collections,解释是数据类型 ...
- Python 3 collections.defaultdict() 与 dict的使用和区别
综述: 这里的defaultdict(function_factory)构建的是一个类似dictionary的对象,其中keys的值,自行确定赋值,但是values的类型,是function_fact ...
- collections.defaultdict()
https://www.cnblogs.com/herbert/archive/2013/01/09/2852843.html >>> import collections > ...
- Python中collections.defaultdict()使用
一个小示例 from collections import defaultdict import json def tree(): return defaultdict(tree) users = t ...
- Python之collections.defaultdict
转自:http://www.jb51.net/article/88147.htm
随机推荐
- face-morpher过程函数分析
01 dlib.get_frontal_face_detector #功能:人脸检测画框#参数:无#返回值:默认的人脸检测器 02 points1.astype 转换数组的数据类型 03 np.mea ...
- 使用OpenCV(C ++ / Python)进行人脸交换
-- 图3.面部对齐.左:检测到面部标志和凸包.中:凸包上的点的Delaunay三角剖分.右:通过仿射扭曲三角形进行面部对齐. 1 人脸对齐 1.1 脸部地标检测 两个脸部的几何形状非常不同,因此我们 ...
- fingerprint for the ECDSA key
验证 fingerprint for the ECDSA key ssh-keygen -t ecdsa -f ssh_host_ecdsa_key 在B上ssh A ,得到A的fingerpr ...
- 002 centos7中遇到的问题
在关机的时候,发现输入密码之后竟然报错了,然后确认普通用户的密码没有问题.下面是处理方式. 一:问题 1.问题 当在终端执行sudo命令时,系统提示“caojun is not in the sudo ...
- 干货满满!10分钟看懂Docker和K8S(转)
2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司. 这家公司主要提供基于PaaS的云计算技术服务.具体来说,是和LXC有关的容器技术. LXC,就是Linux容器虚 ...
- vs2017在前端页面使用F12无法转到js脚本函数定义
这样设置后就可以正常使用了
- JDBC DataSource
What is DataSource? 作为 DriverManager 设施的替代项,DataSource 对象是获取连接的首选方法.实现DataSource 接口的对象通常在基于 Java(TM) ...
- postgresql 利用pgAgent实现定时器任务
1.安装pgAgent 利用Application Stack Builder安装向导,安装pgAgent. 根据安装向导一步一步安装即可. 安装完成之后,windows服务列表中会增加一个服务:Po ...
- c++调用动态库失败解决办法
c++调用动态库失败解决办法 之前写好的程序今天早上过来发现在服务器上出错了,于是就各种查问题,整整一个早上外加下午两个小时都在查这个问题,最终被我找到了问题: 在程序中我发现LoadLibrary( ...
- C# 使用 Dapper 实现 SQLite 增删改查
Dapper 是一款非常不错的轻型 ORM 框架,使用起来非常方便,经常使用 EF 框架的人几乎感觉不到差别,下面是自己写的 Sqlite 通用帮助类: 数据连接类: public class SQL ...