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容器数据类型的更多相关文章
-
python模块--collections(容器数据类型)
Counter类(dict的子类, 计数器) 方法 返回值类型 说明 __init__ Counter 传入可迭代对象, 会对对象中的值进行计数, 值为键, 计数为值 .elements() 迭代器 ...
-
Python3标准库:collections容器数据类型
1. collections容器数据类型 collections模块包含除内置类型list.dict和tuple以外的其他容器数据类型. 1.1 ChainMap搜索多个字典 ChainMap类管理一 ...
-
python 标准类库-数据类型之集合-容器数据类型
标准类库-数据类型之集合-容器数据类型 by:授客 QQ:1033553122 Counter对象 例子 >>> from collections import Counter ...
-
Python 中的容器 collections
写在之前 我们都知道 Python 中内置了许多标准的数据结构,比如列表,元组,字典等.与此同时标准库还提供了一些额外的数据结构,我们可以基于它们创建所需的新数据结构. Python 附带了一个「容器 ...
-
python容器数据类型的特色
python容器数据类型的特色 list: 可变数据类型(不可哈希), 有序, 可索引获取, 可修改 Dict: 可变数据类型(不可哈希), 3.6版本有序, 可通 ...
-
Python3-collections模块-容器数据类型
Python3中的collections模块实现了一些专业的容器数据类型 最常用的容器数据类型 字典.列表和元组.集合都已经被Python默认导入,但在实现一些特定的业务时,collections模块 ...
-
Python中collections模块
目录 Python中collections模块 Counter defaultdict OrderedDict namedtuple deque ChainMap Python中collections ...
-
Python字符串与容器
[]运算符是Python中访问容器元素和切片的运算符 []有正向和反向两种下标,正向下标从0开始,向后递增: 反向下标以-1表示最后一个元素,-2表示倒数第二个字符,向前递减. []不仅可以访问单个元 ...
-
每天学点Python之collections
每天学点Python之collections 内容摘抄自:<python大法好>的每天学点Python之collections collections模块在内置数据类型(dict.list ...
随机推荐
-
初始python第三天(三)
全局变量与局部变量 1.什么是全局变量 在globals中的变量,都是全局变量,全局变量的作用域就是整个程序 NAME = 'alex' def global_test(): name = 'alex ...
-
PCA算法是怎么跟协方差矩阵/特征值/特征向量勾搭起来的?
PCA, Principle Component Analysis, 主成份分析, 是使用最广泛的降维算法. ...... (关于PCA的算法步骤和应用场景随便一搜就能找到了, 所以这里就不说了. ) ...
-
MVC升级以后出现";当前上下文中不存在ViewBag";的问题解决
把自己的项目从MVC4升级到了MVC5,结果问题一大堆,View的设计环境出现了"当前上下文中不存在ViewBag"的问题: 虽然不影响编译,但是看了总是不爽,而且语法提示也没有了 ...
-
Javascript this指针
Javascript是一门基于对象的动态语言,也就是说,所有东西都是对象,一个很典型的例子就是函数也被视为普通的对象. 前言 Javascript是一门基于对象的动态语言,也就是说,所有东西都是对 ...
-
二叉树删除 lisp
;;; From ANSI Common Lisp ; If you have questions or comments about this code, or you want; somethin ...
-
js webstorm用法
js webstorm用法 一.什么是webstorm? WebStorm 是jetbrains公司旗下一款JavaScript 开发工具.被广大中国JS开发者誉为“Web前端开发神器” ...
-
java_method_删除事务回滚
public String[] deleteEPGroup(String groupID, String groupName) { String[] operRes=new String[3]; if ...
-
CSS让图片垂直居中的几种技巧 三种方法介绍
在网页设计过程中,有时候会希望图片垂直居中的情况.而且,需要垂直居中的图片的高度也不确定,这就会给页面的布局带来一定的挑战.下面总结了一下,曾经使用过的几种方法来使图片垂直居中,除了第一种方法只限于标 ...
-
伸缩放大的js
window.onload = function() { var div1 = document.getElementById('div1'); div1.onmous ...
-
Hibernate一个简短的引论
我们从几个方面进行阐述Hibernate When? What ? How? When? Hibernate由来是因为当时EJBBean1.1在处理entittBean架构时,花费的时间要比业务逻辑很 ...