前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python常见模块之collections模块

python常见模块之collections模块

作者头像
人生不如戏
发布2018-04-12 11:18:34
7250
发布2018-04-12 11:18:34
举报
文章被收录于专栏:抠抠空间抠抠空间

一、模块简介

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

1.namedtuple: 生成可以使用名字来访问元素内容的tuple

2.deque: 双端队列,可以快速的从另外一侧追加和推出对象

3.Counter: 计数器,主要用来计数

4.OrderedDict: 有序字典

5.defaultdict: 带有默认值的字典

二、模块主要功能

1.namedtuple: 生成可以使用名字来访问元素内容的tuple

代码语言:javascript
复制
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
代码语言:javascript
复制
注意:(queue不是collections模块里的,在deque之前我们先来看一下queue) queue: 队列,里面可以存着好多值,只能往里面放值或者往外拿出,不能修改不能查看,而且先拿出的一定是最先放进去的
代码语言:javascript
复制
 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: 双端队列,可以快速的从另外一侧追加和推出对象

代码语言:javascript
复制
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虽然有序,但是也不能通过下标索引来找到元素

代码语言:javascript
复制
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: 带有默认值的字典

可以为字典指定一个默认值,默认值可以是列表,字典等一切可以被调用的对象
代码语言:javascript
复制
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}
代码语言:javascript
复制
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]})
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-01-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、模块简介
  • 二、模块主要功能
    • 1.namedtuple: 生成可以使用名字来访问元素内容的tuple
      • 注意:(queue不是collections模块里的,在deque之前我们先来看一下queue) queue: 队列,里面可以存着好多值,只能往里面放值或者往外拿出,不能修改不能查看,而且先拿出的一定是最先放进去的
    • 2.deque: 双端队列,可以快速的从另外一侧追加和推出对象
      • 3.OrderedDict: 有序字典
        • python中常规字典是无序的,每次查看位置都会不一样,而如果需要创建一个有序的字典就要用OrderedDict了。 需要注意的是,OrderedDict虽然有序,但是也不能通过下标索引来找到元素
          • 4.defaultdict: 带有默认值的字典
            • 可以为字典指定一个默认值,默认值可以是列表,字典等一切可以被调用的对象
            • # 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。 # 即: {'k1': 大于66 , 'k2': 小于66}
        • 三、应用实例
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档