collections容器数据类型是对基本数据类型的补充,简单介绍下计数器、有序字典、默认字典、可命名元祖、队列。

计数器(Counter)

Counter是对字典类型的补充,用于追踪值得出现次数

class Counter(dict)

import collections

obj = collections.Counter('asiwenaohweiatgwho')
print(obj)
    def most_common()
# 返回一个列表
    def elements()
# elements用来循环Counter元素 # 取到keys
for item in obj.elements():
print(item) # 取到key和value
for k,v in obj.items():
print(k,v) # 循环elements -> 得到原始数据
# 循环obj -> 得到处理完的数据
    def update()
# 更新Counter obj.update(['eric',11,11])
更新计数器,如果原来没有,则新建,如果有则加1
    def subtract()
# 减少,可以为负

有序字典(OrderedDict)

对字典类型的补充,记住了字典元素添加的顺序

class OrderedDict(dict)

dic = collections.OrderedDict()
# 字典 dic = {'k1':'v1','k2':'v2'}
# 列表 li = ['k1','k2']
# for i in li:
# print(dic[i])
#!/usr/bin/env python3

import collections

# dic = dict()
dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k2'] = 'v2'
dic['k3'] = 'v3' print(dic)
    def move_to_end()
# 把一个已存在的元素移到队尾 dic.move_to_end('k1')
    def popitem()
# 删除并返回,总是按照LIFO顺序,栈 # 按照后进先出的顺序,栈
dic.popitem() def pop()
# 删除指定的k,并返回v dic.pop('k2')
# 有返回值v2
dic['k4'] = None
dic.setdefault('k4') # 这两句效果等同 dic.update({'k1':'xx','k2':'yy'})

默认字典(defaultdict)

定义一个字典,让字典的值默认是个什么类型

dic = collections.defaultdict(list)
dic['k1'].append('alex')
print(dic)
from collections import defaultdict
values = [11,22,33,44,55,66,77,88,99]
my_dict = defaultdict(list) for value in values:
if value > 66:
my_dict['k1'].append(value)
else:
my_dict['k2'].append(value)

可命名元祖(namedtuple)

默认元祖是通过索引去访问,可命名元祖可以通过命名参数去访问

创建可命名元祖,需要先创建类,通过类再去创建可命名元祖

import collections

#先去创建类
MytupleClass = collections.namedtuple('MytupleClass',['x','y','z']) # 创建MytupleClass类
dir(MytupleClass) obj = MytupleClass(11,22,33)
print(obj.x)
print(obj.y)
print(obj.z) obj._asdict() #返回一个有序字典OrderedDict

队列

python提供了两种队列:单向队列和双向队列

双向队列 deque

import collections
dq = collections.deque() # 创建双向队列 dq.append()
dq.appendleft()
dq.clear()
dq.count()
dq.extend()
dq.extendleft()
dq.pop() #从右边取
dq.popleft() # 从左边取
dq.remove() #从左往右删除
dq.reverse()
dq.rotate(n) #轮训,从左往右轮询n个值,如果n为负数,则往左轮询

单向队列 先进先出FIFO

# epoll
# 单向队列,不在collections模块中,在queue中
import queue
q = queue.Queue(N) #创建一个长队为N的单向队列,如果N省略,则无穷大
q.qsize() #返回队列的长度
q.empty() #如果队列为空,则返回True,否则返回False
q.full() #如果队列已满,则返回True,否则返回Faluse
q.put('123') #put一个元素到队列尾部
q.get() #从队列头部移除并返回一个元素,FIFO

python初探-collections容器数据类型的更多相关文章

  1. python模块--collections(容器数据类型)

    Counter类(dict的子类, 计数器) 方法 返回值类型 说明 __init__ Counter 传入可迭代对象, 会对对象中的值进行计数, 值为键, 计数为值 .elements() 迭代器 ...

  2. Python3标准库:collections容器数据类型

    1. collections容器数据类型 collections模块包含除内置类型list.dict和tuple以外的其他容器数据类型. 1.1 ChainMap搜索多个字典 ChainMap类管理一 ...

  3. python 标准类库-数据类型之集合-容器数据类型

    标准类库-数据类型之集合-容器数据类型   by:授客 QQ:1033553122 Counter对象 例子 >>> from collections import Counter ...

  4. Python 中的容器 collections

    写在之前 我们都知道 Python 中内置了许多标准的数据结构,比如列表,元组,字典等.与此同时标准库还提供了一些额外的数据结构,我们可以基于它们创建所需的新数据结构. Python 附带了一个「容器 ...

  5. python容器数据类型的特色

    python容器数据类型的特色 list:           可变数据类型(不可哈希), 有序, 可索引获取, 可修改 Dict:         可变数据类型(不可哈希), 3.6版本有序, 可通 ...

  6. Python3-collections模块-容器数据类型

    Python3中的collections模块实现了一些专业的容器数据类型 最常用的容器数据类型 字典.列表和元组.集合都已经被Python默认导入,但在实现一些特定的业务时,collections模块 ...

  7. Python中collections模块

    目录 Python中collections模块 Counter defaultdict OrderedDict namedtuple deque ChainMap Python中collections ...

  8. Python字符串与容器

    []运算符是Python中访问容器元素和切片的运算符 []有正向和反向两种下标,正向下标从0开始,向后递增: 反向下标以-1表示最后一个元素,-2表示倒数第二个字符,向前递减. []不仅可以访问单个元 ...

  9. 每天学点Python之collections

    每天学点Python之collections 内容摘抄自:<python大法好>的每天学点Python之collections collections模块在内置数据类型(dict.list ...

随机推荐

  1. 使用MD5完成自定义Person对象的加密过程

    ---恢复内容开始--- 首先:我们对自定义Person对象的加密过程所用的方法是归档写入文件的方法. 第一步:创建Person,继承于NSObject,然后在Person.h文件遵守NSCoding ...

  2. java中的上传下载----ajaxFileUpload+struts2

    文件上传在项目中应该是非常常见的,而且很多时候,上传文件都只是一个小页面中的一个功能,要求在实现文件上传的前提下不刷新页面.而一般情况下将客户端的文件包装成网络地址传递到服务器端然后通过流来进行文件传 ...

  3. 大型票务系统中username和password的安全性问题

    讨论请移步至:http://www.zhiliaotech.com/ideajam/idea/detail/307 相关文章: <今天你买到票了吗?--从铁道部12306.cn站点漫谈电子商务站 ...

  4. codefirst初尝试

    Code First 约定 借助 CodeFirst,可通过使用 C# 或Visual Basic .NET 类来描述模型.模型的基本形状可通过约定来检测.约定是规则集,用于在使用 Code Firs ...

  5. 基于maven进行spring 和mybatis的整合(Myeclpise)

    学习日记:基于maven进行spring和mybatis的整合,进行分页查询 什么是maven:maven是一个项目管理工具,使用maven可以自动管理java项目的整个生命周期,包括编译.构建.测试 ...

  6. Struts学习之模型驱动

    * 要从页面中获取表单元素的值,需要在动作类中声明与页面元素同名的属性.导致动作类中既有javabean又有业务方法.    * 将javabean和业务方法进行分离:        * 将重新创建一 ...

  7. Android 开发之Matrix图片处理类的使用

    在Android中,对图片的处理需要使用到Matrix类,Matrix是一个3 x 3的矩阵,他对图片的处理分为四个基本类型: 1.Translate————平移变换 2.Scale————缩放变换 ...

  8. 原生js动态改变dom高度

    item参数为要改变高度的dom,maxHight参数为dom的最大高度,speed参数为改变高度的速度function addHeight(item,maxHight,speed){ var ite ...

  9. poj 3501 Escape from Enemy Territory 预处理+二分+bfs

    传送门 给一个起点一个终点, 给出整个地图的宽和高, 给出n个敌人的坐标. 让你找到一条路径, 这条路径上的点距离所有敌人的距离都最短, 输出最短距离. 首先预处理出来地图上的所有点到敌人的最短距离, ...

  10. halcon与C#混合编程

    halcon源程序: dev_open_window(0, 0, 512, 512, 'black', WindowHandle)read_image (Image, 'C:/Users/BadGuy ...