Python基础之collection
collection-系列
cellection是作为字典、元组(列表与元组可互相转换)的扩充,在此需要导入cellection
一、计数器(counter)
counter是对字典类型的补充,用户获取字典中元素出现的次数。它具备字典所有的功能以及自己自带的功能。
import collections
stra = collections.Counter('asdfasdfasdfdgghjertgfgsa')
print(stra)
输出的结果是:
Counter({'a': 4, 'd': 4, 'g': 4, 'f': 4, 's': 4, 'e': 1, 'h': 1, 'j': 1, 'r': 1, 't': 1})
后面的数字表示的是出现的次数。
Counte
most_common,出现最多
import collections
stra = collections.Counter('asdfasdfasdf[dggh]jertgfgsa')
print(stra)
ret = stra.most_common(4)
print(ret)
测试结果:
Counter({'a': 4, 'd': 4, 'g': 4, 'f': 4, 's': 4, 'e': 1, 'h': 1, 'j': 1, 'r': 1, 't': 1, '[': 1, ']': 1}) [('a', 4), ('d', 4), ('g', 4), ('f', 4)] 输出了排名前四的
most_common
elements元素:
import collections
stra = collections.Counter('asdfasdfasdf[dggh]jertgfgsa')
for items in stra.elements():
print(items)
执行结果:
Counter({'a': 4, 'd': 4, 'g': 4, 'f': 4, 's': 4, 'e': 1, 'h': 1, 'j': 1, 'r': 1, 't': 1, '[': 1, ']': 1})
a
a
a
a
e
d
d
d
d
g
g
g
g
f
f
f
f
h
j
s
s
s
s
r
t
[
]
区别于:
import collections
stra = collections.Counter('asdfasdfasdf[dggh]jertgfgsa')
print (stra)
# for item in stra.elements():
# print(item)
for item in stra.items():
print(item)
执行结果:
Counter({'a': 4, 'd': 4, 'g': 4, 'f': 4, 's': 4, 'e': 1, 'h': 1, 'j': 1, 'r': 1, 't': 1, '[': 1, ']': 1})
('a', 4)
('e', 1)
('d', 4)
('g', 4)
('f', 4)
('h', 1)
('j', 1)
('s', 4)
('r', 1)
('t', 1)
('[', 1)
(']', 1)
更新(增加删除)操作:
增加:
import collections
stra = collections.Counter(['aa','bb','cc'])
print(stra)
stra.update(['dd','aa','bb'])
print(stra)
结果:
Counter({'aa': 1, 'cc': 1, 'bb': 1})
Counter({'aa': 2, 'bb': 2, 'cc': 1, 'dd': 1}) 证明增加成功。
删除:
import collections
stra = collections.Counter(['aa','bb','cc'])
print(stra)
stra.update(['dd','aa','bb'])
print(stra)
stra.subtract(['dd','aa','bb'])
print(stra)
输出结果:
Counter({'aa': 1, 'cc': 1, 'bb': 1})
Counter({'aa': 2, 'bb': 2, 'cc': 1, 'dd': 1})
Counter({'aa': 1, 'cc': 1, 'bb': 1, 'dd': 0})证明已经删除了。
二、有序字典(orderedDict)
有序字典是对字典的补充:
dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k2'] = 'v2'
dic['k3'] = 'v3'
dic['k4'] = 'v4'
dic['k5'] = 'v5'
print(dic)
结果输出:
OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3'), ('k4', 'v4'), ('k5', 'v5')])
值不会变而且是固定了,不像字典一样位置会是浮动变化的。 popitem用法:
dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k2'] = 'v2'
dic['k3'] = 'v3'
dic['k4'] = 'v4'
dic['k5'] = 'v5'
print(dic)
c = dic.popitem()
print(dic)
print(c)
输出结果:
OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3'), ('k4', 'v4'), ('k5', 'v5')])
OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3'), ('k4', 'v4')])
('k5', 'v5')取出了‘k5’,'v5'是最后进的,所以遵循后进先出。
pop用法:
dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k2'] = 'v2'
dic['k3'] = 'v3'
dic['k4'] = 'v4'
dic['k5'] = 'v5'
print(dic)
# c = dic.popitem()
c = dic.pop('k2') ###指定取出k2
print(dic)
print(c)
输出结果:
OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3'), ('k4', 'v4'), ('k5', 'v5')])
OrderedDict([('k1', 'v1'), ('k3', 'v3'), ('k4', 'v4'), ('k5', 'v5')]) pop表示是拿出删除据为己有。
v2 得到k2值 新增update:
dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k2'] = 'v2'
dic['k3'] = 'v3'
dic['k4'] = 'v4'
dic['k5'] = 'v5'
print(dic)
dic.update({'k1':'','k5':'','k10':''})
print(dic)
输出结果:
OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3'), ('k4', 'v4'), ('k5', 'v5')])
OrderedDict([('k1', ''), ('k2', 'v2'), ('k3', 'v3'), ('k4', 'v4'), ('k5', ''), ('k10', '')])表示有k值更新k值。没有就新增。
三、默认字典(defaultdict)
defaultdict是对字典的类型的补充,他默认给字典的值设置了一个类型。
import collections
dic = collections.defaultdict(list) #定义默认字典类型为list。
dic['k1'].append('')
print(dic)
输出:
defaultdict(<type 'list'>, {'k1': ['']}) 如果不采用默认字典:
import collections
dic = {}
dic['k1'].append('')
print(dic)
会报错:
Traceback (most recent call last):
File "C:/Users/daisy/PycharmProjects/s12/day3/collection-ϵ��.py", line 54, in <module>
dic['k1'].append('')
KeyError: 'k1'
四、可命名元组(namedtuple)
import collections
#创建类。MyTupleClass
MyTupleClass = collections.namedtuple('MyTupleClass',['x','y','z'])
obj = MyTupleClass('xx','yy','zz')
print(obj.x)
print(obj.y)
print(obj.z)
测试:
xx
yy
zz
五、双向队列(deque)
que = collections.deque()
que.append('')
que.appendleft('')
que.append('')
que.extend(['xx','xxd','xxxd'])
que.extendleft(['','',''])
print(que)
print(que.rotate(2))
print(que.count(''))
print(que)
执行:
deque(['', '', '', '', '', '', 'xx', 'xxd', 'xxxd'])
None
1
deque(['xxd', 'xxxd', '', '', '', '', '', '', 'xx'])
六、单向队列(queue.queue)在queue
import Queue
q = Queue.Queue()
q.put("abc")
q.put("def")
print(q.qsize())
print(q.get())
运行结果: 2
abc 先进先出:abc先进所以输出abc。
Python基础之collection的更多相关文章
- Python开发【第二篇】:Python基础知识
Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...
- Python之路【第二篇】:Python基础
参考链接:老师 BLOG : http://www.cnblogs.com/wupeiqi/articles/4906230.html 入门拾遗 一.作用域 只要变量在内存中就能被调用!但是(函数的栈 ...
- Python基础教程【读书笔记】 - 2016/7/14
希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第六波:第2章 列表和元组 [总览] 数据结构,是通过某种方式组织在一起的数据元素的集合,数据元素可以使数字或字符串 ...
- Python之路【第二篇】:Python基础(一)
一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if 1==1: name = 'wupeiqi' print name 下面的结论对吗? ...
- Python之路:Python 基础(二)
一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. if 1==1: name = 'lenliu' print name 下面的结论对吗?(对) 外层变量,可以被 ...
- 第三章:Python基础の函数和文件操作实战
本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...
- python基础——列表推导式
python基础--列表推导式 1 列表推导式定义 列表推导式能非常简洁的构造一个新列表:只用一条简洁的表达式即可对得到的元素进行转换变形 2 列表推导式语法 基本格式如下: [expr for va ...
- python基础之列表、字典、元祖等 (二)
一.作用域 if 1==1: name = 'weibinf' print name 下面的结论对吗? 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 result = 值1 ...
- Python基础面试题库
Python基础面试题库 Python是一门学习曲线较为容易的编程语言,随着人工智能时代的到来,Python迎来了新一轮的高潮.目前,国内知乎.网易(游戏).腾讯(某些网站).搜狐(邮箱).金山. ...
随机推荐
- 解决 Git 冲突的 14 个建议和工具
Git 非常善于合并代码.代码的合并在本地完成,快速而且灵活.正常情况下每次从不同分支合并内容时,冲突有可能会发生.通常解决冲突很简单,就如同知道(如何)选择(保留)重要的更改一样,而有时解决冲突则需 ...
- 用windows的批处理文件批量更改文件后缀
[转自]http://jingyan.baidu.com/article/e9fb46e196ea187521f7661a.html 无需软件批量修改文件后缀名?怎么通过命令行批量修改文件后缀名?有 ...
- 【应用】SVG饼状图
<!DOCTYPE html> <html> <head> <title></title> </head> <body o ...
- hdu-5621 KK's Point(dp+数学)
题目链接: KK's Point Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- VS2013Z学习java插件
https://visualstudiogallery.msdn.microsoft.com/bc561769-36ff-4a40-9504-e266e8706f93 Bugs and Feature ...
- Building Objective-C static libraries with categories(ObjC、all_load、force_load)
https://developer.apple.com/library/mac/qa/qa1490/_index.html 之所以使用该标志,和Objective-C的一个重要特性:类别(cat ...
- spark运行模式之一:Spark的local模式安装部署
Spark运行模式 Spark 有很多种模式,最简单就是单机本地模式,还有单机伪分布式模式,复杂的则运行在集群中,目前能很好的运行在 Yarn和 Mesos 中,当然 Spark 还有自带的 Stan ...
- String类无子类
1. 关于final修饰符 参考文章: 浅析Java中的final关键字 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量 ...
- 发送邮件小工具(python)
#!/usr/bin/python # -*- coding:UTF- -*- import sys import smtplib import email.mime.multipart import ...
- 项目中常用的js骚操作
//打开网址window.open("http://www.runoob.com"); //判断是否为url var url = $("#url").val() ...