阅读大概需要5分钟

转载自 Python学习——collections系列

作者 欢小哥

编辑 zenRRan

原文链接 :

http://www.cnblogs.com/huan-ge/p/6690929.html

一 ,计数器(counter) 

Counter是对字典类型的补充,用于追踪值得出现次数 ps:具备字典的所有功能 + 自己的功能

例:

>>> from collections import Counter

>>> c = Counter('aadsassdsdads')

>>> print(c)

Counter({'a':4,'d':4,'s':5})

基本操作方法: 

>>> c = Counter('abcdeabcdabcaba')

1.most_common(N)数量从大到小排列,获取前N个元素 

>>> c.most_common(3)

[('a', 5), ('b', 4), ('c', 3)]

2.sorted()列出所有不同的元素并排序 

>>> sorted(c)

>>> ['a','b','c','d','e']

3.转换成字符串 

>>> ''.join(sorted(c.elements()))

'aaaaabbbbcccdde'

4.取得元素重复次数的值 

>>> c['a']

5

5.更新并添加元素重复次数 

>>> for elem in 'shazam':

    c[elem] += 1        #每个元素的次数加1

>>> c['a']

7

>>> print(c)

Counter({'a':7,'b':4,'c':3,'d':2,'s':1,'h':1,'z':1,'m':1,'e':1})

6.update()更新计数器,其实就是增加;如果原来没有,则新建,如果有则加一

>>> d = Counter('simsalabim')

>>> c.update(d)

>>> c['a']

9

>>> print(c)

Countr({'a':9,'b':5,'s':3,'c':3,'m':3,'i':2,'d':2,'h':1,'l':1,'z':1,'e':1})

7.清空字典 

>>> c.clear()

>>> c

Counter()

8.elements()取得计数器中的所有元素,注:此处非所有元素集合,而是包含所有元素集合的迭代器 

>>> c = Counter('abcabc')

>>> sorted(c.elements())

['a','a','b','b','c','c']

9.subtract()相减,原来的计数器中的每一个元素的数量减去后添加的元素的数量 

>>> c = Counter('which')

>>> print(c)

Counter({'h':2,'c':1,'w':'1','i':1})

>>> c.subtract('watch')

>>> c['h']

1

>>> c['w']

0

>>> print(c)

Counter({'h':1,'i':1,'w':0,'c':0,'t':-1,'a':-1})

二, 有序字典(orderedDict)  

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

>>> from collections import OrderedDict

>>> dic = OrderedDict()

>>> dic['k1'] = 'v1'

>>> dic['k2'] = 'v2'

>>> dic['k3'] = 'v3'

>>> print(dic)

OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])

基本操作方法: 

1.取得字典所有的键 

>>> dic.keys()

2.取得字典所有值 

>>> dic.values()

3.items() 方法以列表返回可遍历的(键, 值) 元组数组 

>>> dic.items()

odict_items([('k1','v1'),('k2','v2'),('k3','v3')])

4.pop()方法,删除指定的键值 

>>> dic.pop('k1')

'v1'

>>> print(dic)

OrderedDict([('k2','v2'),('k3','v3')])

5.popitem()方法,默认删除字典最后一个元素 

>>> dic.popitem()

('k3','v3')

>>> print(dic)

odict_items([('k1','v1'),('k2','v2')])

6.move_to_end('k')方法将指定键值一道最后

>>> dic.move_to_end('k1')

>>> print(dic)

OrderedDict([('k2', 'v2'), ('k3', 'v3'),('k1', 'v1')])

7.update()更新字典 

>>> dic.update({'k1':'v1111','k10':'v10'})

>>> print(dic)

OrderedDict([('k1', 'v1111'), ('k2', 'v2'), ('k3', 'v3'),('k10','v10')])

三 , 默认字典(defaultdict) 

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

例:

集合 [11,22,33,44,55,66,77,88,99...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。

即: {'k1': 大于66 , 'k2': 小于66}

原生字典解决方法: 

1 values = [11, 22, 33,44,55,66,77,88,99]

2 my_dict = {}

3 for value in  values:

4   if value>66:

5     if my_dict.has_key('k1'):

6       my_dict['k1'].append(value)

7     else:

8       my_dict['k1'] = [value]

9   else:

10     if my_dict.has_key('k2'):

11       my_dict['k2'].append(value)

12     else:

13       my_dict['k2'] = [value]

默认字典解决方法:

1 from collections import defaultdict

2 values = [11, 22, 33,44,55,66,77,88,99]

3 my_dict = defaultdict(list)                 #默认将字典设置成列表类型 

4 for value in  values:

5   if value>66:

6     my_dict['k1'].append(value)

7   else:

8     my_dict['k2'].append(value)

四,可命名元组(namedtuple)  

根据nametuple可以创建一个包含tuple所有功能以及其他功能的类型。

from collections import namedtuple #创建(给元组命名)

>>> Mytuple = namedtuple('Mytuple',['x','y','z'])

>>> obj = Mytuple(11,22,33) #通过x,y,z取得元组的值 

>>> obj.x 11

>>> obj.y 22

>>> obj.z 33

五,双向队列(deque) 

一个线程安全的双向队列 

from collections import deque #创建双向队列

>>> d = deque()

>>> d.append('1')

>>> d.append('2')

1.append()向队列中插入数据(从右边插入) 

>>> d.append('3')

>>> print(d)

deque(['1','2','3'])

2.appendleft()向队列中插入数据(从左边插入) 

>>> d.appendleft('4')

>>> print(d)

deque(['4','1','2','3'])

3.clear()清空队列 

>>> d.clear()

>>> print(d)

deque([])

4.count()计数 

>>> d.append('1')

>>> print(d)

deque(['1','2','1'])

>>> d.count('1')

2

5.extend()从右边向队列添加额外元素 

>>> d.extend(['qq','ww','ee'])

>>> print(d)

deque(['1','2','qq','ww','ee'])

6.extendleft()从左边向队列添加元素 

>>> d.extendleft(['qq','ww','ee'])

>>> print(d)

deque(['qq','ww','ee','1','2'])

7.index()取得元素下标 

>>> d.index('1')

0

8.insert()指定位置插入元素 

>>> d.insert(1,'nn')

>>> print(d)

deque(['1','nn','2'])

9.pop()从右边移除一个元素 

>>> d.pop()

2

>>> print(d)

deque(['1','nn'])

10.popleft()从左边移除一个元素 

>>> d.popleft()

1

>>> print(d)

deque(['nn'])

11.remove()移除指定元素 

>>> d.remove('1')

>>> print(d)

deque(['2'])

12.reverse()反转队列 

>>> print(d)

deque(['1','2'])

>>> d.reverse()

>>> print(d)

deque(['2','1'])

13.rotate()将右边指定的元素个数移到队列左边 

>>> d.append('4')

>>> d.append('5')

>>> d.append('6')

>>> print(d)

deque(['1','2','3','4','5','6'])

>>> d.rotate(3)

>>> print(d)

deque(['4','5','6','1','2','3'])

六,单向队列(先进先出 FIFO )

import queue # 创建单向队列

>>> q = queue.Queue()

1.添加元素 

>>> q.put('11')

>>> q.put('22')

2.qsize()获取队列中元素个数 

>>> q.qsize()

2

3.get()取得元素(先进先出) 

>>> q.get()

11

>>> q.get()

22

每日托福单词

molecular  adj.分子的

renaissance  n.复兴

kinship  n.亲属关系

economy  n.节约

incorporate  v.合并,吸收,包含

推荐阅读:

详解依存树的来龙去脉及用法

TreeLSTM Sentiment Classification

一分钟搞懂的算法之BPE算法

福利来了!本人近300G的学习资料愿与大家分享

【干货】神经网络SRU

基于attention的seq2seq机器翻译实践详解

【干货】基于注意力机制的seq2seq网络

【干货】GRU神经网络


欢迎关注深度学习自然语言处理公众号,我会每天更新自己在科研学习路上的一点一滴!再小的人也有自己的品牌!期待和你一起进步!

长按识别二维码

点个赞呗

Python学习——collections系列相关推荐

  1. Python学习教程系列

    最近计划把Python的学习过程总结一下,写成一个系列教程,每天都会更新一点.目前计划教程的前半部分讲python的基本知识,后半部分讲数据结构和算法的内容. 前言: Python是一门技术,也是一门 ...

  2. Python学习笔记系列——函数

    今年下半年的计划主要是Python和Mysql了,公司不方便看书和视频,就照着廖雪峰的Python网站开始看了.以下纯为个人笔记记录,若是想系统学习的小伙伴还是看这里的好一些,毕竟系统.https:/ ...

  3. python学习笔记系列----(五)输入和输出

    这一章主要是讲述程序展示其数据的一些方法,一般都是直接按照一定的格式输出在屏幕,或者写入到文件以便以后使用.按照一定格式的输出,在python中实际就是对str的操作,主要就是介绍了formart() ...

  4. python学习笔记系列-方便自我学习

        python小白,刚接触python一个多月,发现自己已经爱上python这一门语言了,自己便做些相应的笔记,方便自己的复习,也希望自己走的弯路能够给大家一点借鉴的意义. #-*- codin ...

  5. python语言有哪两个系列_(转)Python学习笔记系列——Python是一种纯粹的语言

    在摸索适合自己的语言学习方法,看到一篇好文章,转之,侵删. Python的语法范式相当多.知识点相当细,但是Python是一种内在一致性很好的语言,理解了几条基本的规则,就很容易理解大部分语法与现象. ...

  6. python敏感词过滤代码简单代码,Python学习笔记系列——读写文件以及敏感词过滤器的实现...

    一.读文件 #打开文件,传入文件名和标识符,r代表读 f= open('\\Users\ZC\Desktop\zc.txt','r') #调用read方法一次性读取文件的全部内容,存入内存,用str对 ...

  7. Python学习笔记(六)

    1. IO编程 1.1 文件读写 1.2 StringIO和BytesIO 1.3 操作文件和目录 1.4 序列化 2. 进程和线程 2.1 多进程 2.2 多线程 2.3 ThreadLocal 2 ...

  8. Python: 学习系列之七:模块、PIPY及Anaconda

    系列 Python: 学习系列之一:Python能做什么 Python: 学习系列之二:基础介绍(int/float/string/range/list/tuple/dict/set) Python: ...

  9. Python学习系列(六)(模块)

    Python学习系列(六)(模块) Python学习系列(五)(文件操作及其字典) 一,模块的基本介绍 1,import引入其他标准模块 标准库:Python标准安装包里的模块. 引入模块的几种方式: ...

  10. Python学习系列(五)(文件操作及其字典)

    Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件      在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...

最新文章

  1. 全球数据进入ZB时代,希捷如何让数据创造深价值?
  2. R语言使用for循环绘制多个模型的DCA(Decision Curve Analysis)曲线并保存特定分辨率的DCA曲线的结果文件
  3. 安卓高手之路之 ClassLoader
  4. 流程的python-什么时候学流畅的python合适?
  5. Java代理模式/静态代理/动态代理
  6. css3加载ing动画
  7. 英特尔核芯显卡控制面板没有了_只认性能你就输了!英特尔第十代酷睿处理器最全解析...
  8. Nginx + keepalived 实现高可用
  9. mvc路由原理 php_s-blog博客系统开发之前端路由配置
  10. 我的实用小软件(持续更新)
  11. matlab应用书pdf下载,MATLAB及Mathematica软件应用 pdf epub mobi txt 下载
  12. uq mysql_MySQL workbench中的PK,NN,UQ,BIN,UN,ZF,AI说明
  13. linux系统下questasim 10.7安装教程
  14. 什么原因让你对程序员失去了往日的热情?
  15. 集群部署时的分布式 Session 如何实现?
  16. 安卓系统刷机怎么刷机_手机刷机怎么刷
  17. 上海外星人电脑旗舰店ALIENWARE笔记本实体专卖店
  18. 法院访客定位管理方案
  19. 计算机word设置斜框线,Word表格斜线怎么弄?这里有三种方法很实用
  20. IE11修改为IE8

热门文章

  1. 关于android的各种disk images(看过的讲android image比较细致的好文)
  2. C#结合VS开发WinForm学习笔记
  3. PHP判断远程url是否有效的几种方法
  4. spring 事务传播行为类型
  5. intellij idea参数提示param hints
  6. UNICODE编码UTF-16 中的Endian(FE FF) 和 Little Endian(FF FE)
  7. VS 2017 RC到期的解决方法
  8. aspx反射调用方法
  9. Spring boot 的profile功能如何实现多环境配置自动切换
  10. 11月17日站立会议内容