Python基础之collection

collection-系列

  cellection是作为字典、元组(列表与元组可互相转换)的扩充,在此需要导入cellection

一、计数器(counter)

  counter是对字典类型的补充,用户获取字典中元素出现的次数。它具备字典所有的功能以及自己自带的功能。

  

  

1 import collections
2 stra = collections.Counter(‘asdfasdfasdfdgghjertgfgsa‘)
3 print(stra)
4 输出的结果是:
5 Counter({‘a‘: 4, ‘d‘: 4, ‘g‘: 4, ‘f‘: 4, ‘s‘: 4, ‘e‘: 1, ‘h‘: 1, ‘j‘: 1, ‘r‘: 1, ‘t‘: 1})
6 后面的数字表示的是出现的次数。

Counte

  most_common,出现最多  

  

1 import collections
2 stra = collections.Counter(‘asdfasdfasdf[dggh]jertgfgsa‘)
3 print(stra)
4 ret = stra.most_common(4)
5 print(ret)
6 测试结果:
7 Counter({‘a‘: 4, ‘d‘: 4, ‘g‘: 4, ‘f‘: 4, ‘s‘: 4, ‘e‘: 1, ‘h‘: 1, ‘j‘: 1, ‘r‘: 1, ‘t‘: 1, ‘[‘: 1, ‘]‘: 1})
8
9 [(‘a‘, 4), (‘d‘, 4), (‘g‘, 4), (‘f‘, 4)] 输出了排名前四的

most_common

   elements元素:  

  

 1 import collections
 2 stra = collections.Counter(‘asdfasdfasdf[dggh]jertgfgsa‘)
 3 for items in stra.elements():
 4     print(items)
 5 执行结果:
 6 Counter({‘a‘: 4, ‘d‘: 4, ‘g‘: 4, ‘f‘: 4, ‘s‘: 4, ‘e‘: 1, ‘h‘: 1, ‘j‘: 1, ‘r‘: 1, ‘t‘: 1, ‘[‘: 1, ‘]‘: 1})
 7 a
 8 a
 9 a
10 a
11 e
12 d
13 d
14 d
15 d
16 g
17 g
18 g
19 g
20 f
21 f
22 f
23 f
24 h
25 j
26 s
27 s
28 s
29 s
30 r
31 t
32 [
33 ]
34 区别于:
35 import collections
36 stra = collections.Counter(‘asdfasdfasdf[dggh]jertgfgsa‘)
37 print (stra)
38 # for item in stra.elements():
39 #     print(item)
40 for item in stra.items():
41     print(item)
42 执行结果:
43 Counter({‘a‘: 4, ‘d‘: 4, ‘g‘: 4, ‘f‘: 4, ‘s‘: 4, ‘e‘: 1, ‘h‘: 1, ‘j‘: 1, ‘r‘: 1, ‘t‘: 1, ‘[‘: 1, ‘]‘: 1})
44 (‘a‘, 4)
45 (‘e‘, 1)
46 (‘d‘, 4)
47 (‘g‘, 4)
48 (‘f‘, 4)
49 (‘h‘, 1)
50 (‘j‘, 1)
51 (‘s‘, 4)
52 (‘r‘, 1)
53 (‘t‘, 1)
54 (‘[‘, 1)
55 (‘]‘, 1)

  更新(增加删除)操作:  

  

 1 增加:
 2 import collections
 3 stra = collections.Counter([‘aa‘,‘bb‘,‘cc‘])
 4 print(stra)
 5 stra.update([‘dd‘,‘aa‘,‘bb‘])
 6 print(stra)
 7 结果:
 8 Counter({‘aa‘: 1, ‘cc‘: 1, ‘bb‘: 1})
 9 Counter({‘aa‘: 2, ‘bb‘: 2, ‘cc‘: 1, ‘dd‘: 1}) 证明增加成功。
10 删除:
11 import collections
12 stra = collections.Counter([‘aa‘,‘bb‘,‘cc‘])
13 print(stra)
14 stra.update([‘dd‘,‘aa‘,‘bb‘])
15 print(stra)
16 stra.subtract([‘dd‘,‘aa‘,‘bb‘])
17 print(stra)
18 输出结果:
19 Counter({‘aa‘: 1, ‘cc‘: 1, ‘bb‘: 1})
20 Counter({‘aa‘: 2, ‘bb‘: 2, ‘cc‘: 1, ‘dd‘: 1})
21 Counter({‘aa‘: 1, ‘cc‘: 1, ‘bb‘: 1, ‘dd‘: 0})证明已经删除了。

二、有序字典(orderedDict)

  有序字典是对字典的补充:  

  

 1 dic = collections.OrderedDict()
 2 dic[‘k1‘] = ‘v1‘
 3 dic[‘k2‘] = ‘v2‘
 4 dic[‘k3‘] = ‘v3‘
 5 dic[‘k4‘] = ‘v4‘
 6 dic[‘k5‘] = ‘v5‘
 7 print(dic)
 8 结果输出:
 9 OrderedDict([(‘k1‘, ‘v1‘), (‘k2‘, ‘v2‘), (‘k3‘, ‘v3‘), (‘k4‘, ‘v4‘), (‘k5‘, ‘v5‘)])
10 值不会变而且是固定了,不像字典一样位置会是浮动变化的。
11
12 popitem用法:
13 dic = collections.OrderedDict()
14 dic[‘k1‘] = ‘v1‘
15 dic[‘k2‘] = ‘v2‘
16 dic[‘k3‘] = ‘v3‘
17 dic[‘k4‘] = ‘v4‘
18 dic[‘k5‘] = ‘v5‘
19 print(dic)
20 c = dic.popitem()
21 print(dic)
22 print(c)
23 输出结果:
24 OrderedDict([(‘k1‘, ‘v1‘), (‘k2‘, ‘v2‘), (‘k3‘, ‘v3‘), (‘k4‘, ‘v4‘), (‘k5‘, ‘v5‘)])
25 OrderedDict([(‘k1‘, ‘v1‘), (‘k2‘, ‘v2‘), (‘k3‘, ‘v3‘), (‘k4‘, ‘v4‘)])
26 (‘k5‘, ‘v5‘)取出了‘k5’,‘v5‘是最后进的,所以遵循后进先出。
27 pop用法:
28 dic = collections.OrderedDict()
29 dic[‘k1‘] = ‘v1‘
30 dic[‘k2‘] = ‘v2‘
31 dic[‘k3‘] = ‘v3‘
32 dic[‘k4‘] = ‘v4‘
33 dic[‘k5‘] = ‘v5‘
34 print(dic)
35 # c = dic.popitem()
36 c = dic.pop(‘k2‘)      ###指定取出k2
37 print(dic)
38 print(c)
39 输出结果:
40 OrderedDict([(‘k1‘, ‘v1‘), (‘k2‘, ‘v2‘), (‘k3‘, ‘v3‘), (‘k4‘, ‘v4‘), (‘k5‘, ‘v5‘)])
41 OrderedDict([(‘k1‘, ‘v1‘), (‘k3‘, ‘v3‘), (‘k4‘, ‘v4‘), (‘k5‘, ‘v5‘)])   pop表示是拿出删除据为己有。
42 v2       得到k2值
43
44 新增update:
45 dic = collections.OrderedDict()
46 dic[‘k1‘] = ‘v1‘
47 dic[‘k2‘] = ‘v2‘
48 dic[‘k3‘] = ‘v3‘
49 dic[‘k4‘] = ‘v4‘
50 dic[‘k5‘] = ‘v5‘
51 print(dic)
52 dic.update({‘k1‘:‘12‘,‘k5‘:‘10‘,‘k10‘:‘20‘})
53 print(dic)
54 输出结果:
55 OrderedDict([(‘k1‘, ‘v1‘), (‘k2‘, ‘v2‘), (‘k3‘, ‘v3‘), (‘k4‘, ‘v4‘), (‘k5‘, ‘v5‘)])
56 OrderedDict([(‘k1‘, ‘12‘), (‘k2‘, ‘v2‘), (‘k3‘, ‘v3‘), (‘k4‘, ‘v4‘), (‘k5‘, ‘10‘), (‘k10‘, ‘20‘)])表示有k值更新k值。没有就新增。

三、默认字典(defaultdict)  

  defaultdict是对字典的类型的补充,他默认给字典的值设置了一个类型。 

  

 1 import collections
 2 dic = collections.defaultdict(list)  #定义默认字典类型为list。
 3 dic[‘k1‘].append(‘100‘)
 4 print(dic)
 5 输出:
 6 defaultdict(<type ‘list‘>, {‘k1‘: [‘100‘]})
 7
 8 如果不采用默认字典:
 9 import collections
10 dic = {}
11 dic[‘k1‘].append(‘100‘)
12 print(dic)
13 会报错:
14 Traceback (most recent call last):
15   File "C:/Users/daisy/PycharmProjects/s12/day3/collection-???.py", line 54, in <module>
16     dic[‘k1‘].append(‘100‘)
17 KeyError: ‘k1‘

四、可命名元组(namedtuple)

  

 1 import collections
 2 #创建类。MyTupleClass
 3 MyTupleClass = collections.namedtuple(‘MyTupleClass‘,[‘x‘,‘y‘,‘z‘])
 4 obj = MyTupleClass(‘xx‘,‘yy‘,‘zz‘)
 5 print(obj.x)
 6 print(obj.y)
 7 print(obj.z)
 8 测试:
 9 xx
10 yy
11 zz

五、双向队列(deque)

  

 1 que = collections.deque()
 2 que.append(‘1‘)
 3 que.appendleft(‘10‘)
 4 que.append(‘20‘)
 5 que.extend([‘xx‘,‘xxd‘,‘xxxd‘])
 6 que.extendleft([‘11‘,‘22‘,‘333‘])
 7 print(que)
 8 print(que.rotate(2))
 9 print(que.count(‘1‘))
10 print(que)
11 执行:
12 deque([‘333‘, ‘22‘, ‘11‘, ‘10‘, ‘1‘, ‘20‘, ‘xx‘, ‘xxd‘, ‘xxxd‘])
13 None
14 1
15 deque([‘xxd‘, ‘xxxd‘, ‘333‘, ‘22‘, ‘11‘, ‘10‘, ‘1‘, ‘20‘, ‘xx‘])

六、单向队列(queue.queue)在queue  

  

 1 import Queue
 2 q = Queue.Queue()
 3 q.put("abc")
 4 q.put("def")
 5 print(q.qsize())
 6 print(q.get())
 7 运行结果:
 8
 9 2
10 abc    先进先出:abc先进所以输出abc。

  

  

时间: 2024-10-16 01:26:09

Python基础之collection的相关文章

Python之路【第二篇】:Python基础(一)

Python之路[第二篇]:Python基础(一) 入门知识拾遗 一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if 1==1:     name = 'wupeiqi' print  name 下面的结论对吗? 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 1 result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为假:result = 值2 三.进制 二进制,01 八进

Python基础教程(第十章 自带电池)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5459376.html______ Created on Marlowes 现在已经介绍了Python语言的大部分基础知识.Python语言的核心非常强大,同时还提供了更多值得一试的工具.Python的标准安装中还包括一组模块,称为标准库(standard library).之前已经介绍了一些模块(例如math和cmath,其中包

Python总结:Python基础(一)

Python之路[第二篇]:Python基础(一) 入门知识拾遗 一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if 1==1:     name = 'wupeiqi' print  name 下面的结论对吗? 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 1 result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为假:result = 值2 三.进制 二进制,01 八进

Python之路【第二篇】:Python基础

参考链接:老师 BLOG : http://www.cnblogs.com/wupeiqi/articles/4906230.html 入门拾遗 一.作用域 只要变量在内存中就能被调用!但是(函数的栈有点区别) 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 if 1==1: 2 name = 'tianshuai' 3 print name 所以下面的说法是不对的: 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 1 result =

Python基础教程(第二章 列表和元组)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5293195.html______ Created on Xu Hoo 本章将引入一个新的概念:数据结构.数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在Python中,最基本的数据结构是序列(sequence),序列中的每个元素被分配一个序号——即

python基础(一)

一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if 1==1:     name = 'guigu' print  name 下面的结论对吗? 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 1 result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为假:result = 值2 三.进制 二进制,01 八进制,01234567 十进制,0123456789 十六进制,0123

Python基础教程【读书笔记】 - 2016/7/14

希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第六波:第2章 [总览] 列表和元组 数据结构,是通过某种方式组织在一起的数据元素的集合,数据元素可以使数字或字符串,甚至可以是其他数据结构.最基本的数据结构是序列sequence. 序列中的每个元素被分配一个序号---即元素的位置,也称为索引.第一个索引是0,第二个则是1,以此类推. 首先对序列作一个概览,接下来讲解对所有序列都通用的操作,而这些操作同样适用于字符串.学习如何使用列表,同时看看它有什么特别之处.然后

python基础晋级篇

Python开发[第四篇]:Python基础(一) 三元运算 三元运算(三目运算),是对简单的条件语句的缩写. 1 2 3 4 5 # 书写格式 result = 值1 if 条件 else 值2 # 如果条件成立,那么将 “值1” 赋值给result变量,否则,将“值2”赋值给result变量 基本数据类型补充 set set集合,是一个无序且不重复的元素集合 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2

Python基础教程学习:深入 Python iter() 方法

今天我们来介绍下Python基础教程学习之iter() 方法另外的用法.据说很少有人知道这个用法! 一.上代码.学用法 我们都比较熟悉 iter(obj),会返现一个迭代器,如果 obj 不是可迭代对象,则会报错.但其实如果仔细看官方文档,会发现 iter() 方法其实是接受两个参数的,文档说明如下 iter(object[, sentinel]) sentinel 英文翻译为 哨兵. sentinel 参数是可选的,当它存在时,object 不再传入一个可迭代对象,而是一个可调用对象,通俗点说