在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。

  1.有序字典:   在Python3.6以后字典自动变成有序了,但是3.6版本之前的还需要用到

    OrderedDict: 有序字典,增加的键值对会依次在后面添加

from collections import OrderedDict
od = OrderedDict([("a",1),("b",2),("c",3)])
print(od) #OrderedDict([('a', 1), ('b', 2), ('c', 3)])
od["d"]= 4
od["e"]= 5
print(od) #OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)])

  2.带默认值的字典  defaultdict

    新增加的键,默认值是相同的,可对默认值(value)进行更改,操作与字典操作一样

from collections import defaultdict
values = [11, 22, 33,44,55,66,77,88,99,90]
dic = defaultdict(list)
for i in values:
if i > 66:
dic["k1"].append(i)
else:
dic["k2"].append(i)
print(dic) #defaultdict(<class 'list'>, {'k2': [11, 22, 33, 44, 55, 66], 'k1': [77, 88, 99, 90]})

  3.Counter   计数器

    Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)。Counter类和其他语言的bags或multisets很相似。

  

c = Counter('abcdeabcdabcaba')
print c
输出:Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})

  详细:http://www.cnblogs.com/Eva-J/articles/7291842.html

  4.deque:双端队列   可以快速的从另外一侧追加或者退出对象

    作用:为了高效的实现插入和删除操作的双向列表,适合队列和栈

from collections import deque
q = deque(["a","b","c"])
q.append("x") #在列表尾增加
q.appendleft("y") #在列表首追加
print(q) #deque(['y', 'a', 'b', 'c', 'x'])
print(q.pop()) #x
print(q.popleft()) #y

  5.namedtuple   可命名元组

# from collections import namedtuple
# birth = namedtuple('Struct_time',['year','month','day'])
# b1 = birth(2018,9,5)
# print(type(b1))
# print(b1.year)
# print(b1.month)
# print(b1.day)
# print(b1)
# 可命名元组非常类似一个只有属性没有方法的类
# ['year','month','day']是对象属性名
# Struct_time是类 的名字
# 这个类最大的特点就是一旦实例化 不能修改属性的值

最新文章

  1. Smart Tag——DevExpress WPF初探
  2. SqlServer时间格式化
  3. noi 1768 最大子矩阵
  4. numtoyminterval函数——数字转换函数
  5. javascript 拷贝文本
  6. js 字符串转换为数值
  7. spring利用注解来注册bean到容器
  8. 【转】移动web资源整理
  9. JavaScript之面向对象学习一
  10. duilib之源码分析
  11. 微信小程序入门之构建一个简单TODOS应用
  12. 详解Swing中JTree组件的功能
  13. elasticsearch REST API方式批量插入数据
  14. linux 安装nginx 详解
  15. PS 图像调整算法——阈值
  16. CentOS安装.NET CORE
  17. 002-golang安装配置
  18. Python学习笔记第五周
  19. Linux:磁盘挂载
  20. vim在系统剪切板的复制与粘贴

热门文章

  1. Docker磁盘空间分析与清理
  2. Memory Management in Rust
  3. Solution -「NOI 2020」「洛谷 P6776」超现实树
  4. Note - 多项式乱写
  5. etcd受损节点重新加入集群
  6. Typora的使用教程.md
  7. 微服务从代码到k8s部署应有尽有系列(八、各种队列)
  8. ubuntu改镜像源
  9. RFC2544背靠背测试——信而泰Renix测试软件实操
  10. 如何搭建老板想要的dashborad管理驾驶舱,这篇文章值得一看!