python常见模块之collections模块
时间:2022-05-08
本文章向大家介绍python常见模块之collections模块,主要内容包括一、模块简介、二、模块主要功能、2.deque: 双端队列,可以快速的从另外一侧追加和推出对象、3.OrderedDict: 有序字典、python中常规字典是无序的,每次查看位置都会不一样,而如果需要创建一个有序的字典就要用OrderedDict了。
需要注意的是,OrderedDict虽然有序,但是也不能通过下标索引来找到元素、4.defaultdict: 带有默认值的字典、三、应用实例、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
一、模块简介
在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。
1.namedtuple: 生成可以使用名字来访问元素内容的tuple
2.deque: 双端队列,可以快速的从另外一侧追加和推出对象
3.Counter: 计数器,主要用来计数
4.OrderedDict: 有序字典
5.defaultdict: 带有默认值的字典
二、模块主要功能
1.namedtuple: 生成可以使用名字来访问元素内容的tuple
1 from collections import namedtuple
2 Tup = namedtuple('name','x,y')
3 t1 = Tup(1,2)
4 print(t1) # name(x=1, y=2)
5 print(t1.x) # 1
6 print(t1.y) # 2
注意:(queue不是collections模块里的,在deque之前我们先来看一下queue) queue: 队列,里面可以存着好多值,只能往里面放值或者往外拿出,不能修改不能查看,而且先拿出的一定是最先放进去的
1 import queue
2
3 q = queue.Queue()
4 q.put(10)
5 q.put(5)
6 q.put(6)
7
8 print(q.get())
9 print(q.get())
10 print(q.get())
2.deque: 双端队列,可以快速的从另外一侧追加和推出对象
1 from collections import deque
2 q = deque()
3 q.append(1)#从后端插入值
4 q.appendleft(2)#从前面插入值
5 q.insert(1,4) #在指定索引位置插入值
6 q.pop()#从后往前取值
7 q.popleft()#从前面取值
3.OrderedDict: 有序字典
python中常规字典是无序的,每次查看位置都会不一样,而如果需要创建一个有序的字典就要用OrderedDict了。 需要注意的是,OrderedDict虽然有序,但是也不能通过下标索引来找到元素
1 from collections import OrderedDict
2 dic = OrderedDict([('k1',1),('k2',2),('k3',3)])
3 print(dic) #OrderedDict([('k1', 1), ('k2', 2), ('k3', 3)])
4 print(dic['k2']) #2
5 for i in dic:
6 print(i)
7 # k1
8 # k2
9 # k3
4.defaultdict: 带有默认值的字典
可以为字典指定一个默认值,默认值可以是列表,字典等一切可以被调用的对象
1 from collections import defaultdict
2 dic1 = defaultdict(list) #创建一个字典,每个键所对应的值都是一个列表
3 print(dic1['k1'])
4 dic2 = defaultdict(dict) #创建一个字典,每个键所对应的值都是一个字典
5 print(dic2['k1'])
6 dic3 = defaultdict(lambda:5) #创建一个字典,每个键所对应的值都是5 (不能直接写5,因为括号内是能被调用的)
7 print(dic2['k1'])
三、应用实例
# 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。 # 即: {'k1': 大于66 , 'k2': 小于66}
1 from collections import defaultdict
2 l = [11,22,33,44,55,66,77,88,99,90]
3 dic = defaultdict(list)
4 for i in l:
5 if i>66:
6 dic['k1'].append(i)
7 elif i<66:
8 dic['k2'].append(i)
9 print(dic) #defaultdict(<class 'list'>, {'k1': [77, 88, 99, 90], 'k2': [11, 22, 33, 44, 55]})
- Apache Avro是什么干什么用的(RPC/序列化)
- 萌新刷题(十二)二叉树的前序遍历
- 轻松掌握ES6中集合Set的用法
- 萌新刷题(十三)买卖股票的最佳时机
- 萌新刷题(十一)有效数字
- Hive性能优化统计每日IP CREATE TABLE ip_2014_12_29 AS SELECT COUNT(DISTINCT ip) AS IP FROM logdfs WHERE logda
- 算法中描述复杂度的大O是什么意思?
- 优化Mysql:3个简单的调整
- Redis的5个常见应用场景
- Mysql 索引你了解多少?
- Mysql 8 新特性 window functions 有什么用?
- 用两张图告诉你,为什么你的App会卡顿?
- MapReduce设计模式
- 一个Sqrt函数引发的血案
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Exams/ece241 2013 q4答案解析
- ansible生产环境使用场景(三):find查找指定内容
- vue 中 key 值有什么作用?
- webgl实现发光线框(glow wireframe)效果 要实现发光的效果
- [mongodb] mongo常用字段类型
- 无意间发现一个好用的视频转换gif图片的开源框架
- 解读闭包,这次从ECMAScript词法环境,执行上下文说起
- 额度模型(一)
- GitHub Actions使用入门
- freeswitch笔记(9)-esl outbound中如何放音采集按键?
- react childern添加事件
- Spring事务的传播行为案例分析
- ThreadLocal与Java引用类型(文末含福利)
- GitLab 12 跨版本 13 升级
- 打破你的认知!Java空指针居然还能这样玩,90%人不知道…