一.计数器(对字典的扩展)
有如下一个字典:
dic = {'k1':123,'k2':123,'k3':12}
统计12出现的次数,123出现的次数
 
1.统计出现次数
>>> import collections
>>> c = collections.Counter("rewqfsdvcxzfgafrwqerwgfdjg;ldskj")
>>> c
Counter({'f': 4, 'r': 3, 'g': 3, 'w': 3, 'd': 3, 'q': 2, 'e': 2, 's': 2, 'j': 2, 'z': 1, 'k': 1, 'x': 1, ';': 1, 'c': 1, 'a': 1, 'l': 1, 'v': 1}) ======》它告诉了你f出现了4次,r出现了3次。。。。。。。
2.返回前几名
>>> c.most_common()
[('f', )]
>>> c.most_common()
[('f', ), ('r', )]
>>> c.most_common()
[('f', ), ('r', ), ('g', )]
>>> c.most_common()
[('f', ), ('r', ), ('g', ), ('w', )]
>>> c.most_common()
[('f', ), ('r', ), ('g', ), ('w', ), ('d', )]
>>> c.most_common()
[('f', ), ('r', ), ('g', ), ('w', ), ('d', ), ('q', )]
3.相加
>>> c1 = collections.Counter('aabc')
>>> c2 = collections.Counter('aac')
>>> c1
Counter({'a': , 'c': , 'b': })
>>> c2
Counter({'a': , 'c': })
>>> c1.update(c2)
>>> c1
Counter({'a': , 'c': , 'b': })
4.相减
>>> c1
Counter({'a': , 'c': , 'b': })
>>> c2
Counter({'a': , 'c': })
>>> c1.subtract(c2)
>>> c1
Counter({'a': , 'c': , 'b': })
5.迭代器 =====> element
>>> c1
Counter({'a': , 'c': , 'b': })
>>> for item in c1.elements():print (item) c
c
a
a
a
a
b
二.有序字典======>和dict字典是一模一样的,只是它排序了
o1 = collections.OrderedDict()
o1['k1'] =
o1['k2'] =
o1['k3'] =
>>> o1
OrderedDict([('k1', ), ('k2', ), ('k3', )])
三.默认字典========>普通字典的默认value值是None,通过defaultdict修改其默认值为列表;即为你字典里的value设置一个默认类型
collections.defaultdict
传统方式:需要做判断,判断里面的值是否是列表,因为它默认value是None,不能用append方法
dic = {}
if 'k1' in dic.keys():
dic['k1'].append()
else:
dic['k1'] = [,]
默认字典方式:=========>相当于给你设定了一个默认值,默认值就是一个空列表
>>> dic = collections.defaultdict(list)
>>> dic
defaultdict(<class 'list'>, {})
>>> dic['k1'].append()
>>> dic
defaultdict(<class 'list'>, {'k1': []})
四.可命名元组(对元组的扩展)
例:
(,)
,4是我们的位置上的某个点,分别代表x轴和y轴,但是,这样的表述方法只有我们知道,别人不知道,所以需要给元组命名为x=,y=,z=........可命名元组的使用步骤为: .创建类
Mytuple = collections.namedtuple('Mytuple',['x','y']) 这个命令用于创建一个扩展tuple的类,类名叫Mytuple .使用类创建对象
我们在创建元组的时候是这样的:
t1 = (,)<====================>t1 = tuple(,) 你执行前面一个实际上Python的内部机制还是回去调后面这种方式,现在我们自己定义了一个元组扩展的类,可以看看 >>>t2 = Mytuple(,) 发现它返回了一个(x=,y=)的元组
>>>t2
Mytuple(x=, y=) .使用对象 >>> t2.x 现在我们就可以使用t2.x和t2.y分别取访问这两个元素了 >>> t2.y 我们自己创建的类也是有方法的,通过
dir(Mytuple)或者help(Mytuple)可以查看到 >>> help(Mytuple)
Help on class Mytuple in module __main__:
class Mytuple(builtins.tuple) =====>这句话表示Mytuple是通过tuple扩展的类,即tuple是Mytuple的父类,这个 也叫作继承,子类继承父类,表示它可以继承它的父类里的所有东西供自己使用
Mytuple(x, y) >>> dir(Mytuple)
['__add__', '__class__', '__contains__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__module__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__slots__', '__str__', '__subclasshook__', '_asdict', '_fields', '_make', '_replace', '_source', 'count', 'index', 'x', 'y']
五.双向队列
特性1.两头都可以插,两头都可以取
特性2.线程安全,即多个线程来拿的时候我就会给你加个锁,谁先拿了其他人就不能来碰了,这就叫线程安全。
>>> help(collections.deque)

>>> q = collections.deque() ======>创建了一个空的双向队列
>>> q.append() ======>append了几个值
>>> q.append()
>>> q.append()
>>> q.append()
>>> q.append()
>>> q
deque([, , , , ])
六.单向队列(不在collection模块里,在queue模块里,也是线程安全的)
>>> import queue
>>> dir(queue)
['Empty', 'Full', 'LifoQueue', 'PriorityQueue', 'Queue', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'deque', 'heappop', 'heappush', 'threading', 'time'] 创建一个单向队列
>>> q = queue.Queue() =======>10代表这个单向队列里面最多放10条数据
>>> q
<queue.Queue object at 0x02AC2E50>
往里加数据:
>>> q.put()
>>> q.put()
>>> q.put()
往外拿数据:
>>> q.get() >>> q.get() >>> q.get() >>> q.get() =====>当里面没有数据了,光标就停在那里等待,直到里面有了,我就可以拿到了

八、collection系列-----计数器、有序字典、默认字典、可命名元组、双向队列、单向队列一.计数器(对字典的扩展)的更多相关文章

  1. python基础知识4——collection类——计数器,有序字典,默认字典,可命名元组,双向队列

    1.计数器(counter) Counter是对字典类型的补充,用于追踪值的出现次数. ps:具备字典的所有功能 + 自己的功能  Counter 我们从中挑选一些相对常用的方法来举例: 在上面的例子 ...

  2. python-Day3-set 集合-counter计数器-默认字典(defaultdict) -可命名元组(namedtuple)-有序字典(orderedDict)-双向队列(deque)--Queue单项队列--深浅拷贝---函数参数

    上节内容回顾:C语言为什么比起他语言块,因为C 会把代码变异成机器码Pyhton 的 .pyc文件是什么python 把.py文件编译成的.pyc文件是Python的字节码, 字符串本质是 字符数组, ...

  3. Python_Day_05 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuqe.Queue)

    Counter(计数器) 是一个字典的子类,存储形式同样为字典,其中存储的键为字典的元素,值为元素出现的次数,在使用之前我们需要先导入文件 import collections 初始化一个计数器 im ...

  4. 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuqe.Queue)

    Python_Day_05 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuq ...

  5. Python 从零学起(纯基础) 笔记 之 collection系列

    Collection系列  1.  计数器(Counter) Counter是对字典类型的补充,用于追踪值的出现次数   ps  具备字典所有功能 + 自己的功能 Counter import col ...

  6. 3.python基础补充(集合,collection系列,深浅拷贝)

    一.集合 1.集合(set): 把不同的元素组成一起形成集合,是python基本的数据类型.集合元素(set elements):组成集合的成员 python的set和其他语言类似, 是一个无序不重复 ...

  7. python开发学习-day03(set集合、collection系列 、深浅拷贝、函数)

    s12-20160116-day03 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...

  8. python collection系列

    collection系列 不常用功能,需要进行模块功能导入: import collection Counter 常用方法测试: #!/usr/local/env python3 ''' Author ...

  9. Python中list(列表)、dict(字典)、tuple(元组)、set(集合)详细介绍

    更新时间:2019.08.10 更新内容: "2.14加入sorted()函数" "2.3"加入一种删除元素的方法 "二.字典"新增1.5, ...

随机推荐

  1. ESA2GJK1DH1K升级篇: 快速的移植升级程序到自己的项目(APP用户程序制作)

    前言 用户程序比较简单,但是起着至关重要的作用 用户程序是和BootLoader程序相互配合的 拷贝文件到自己的项目 APP用户程序的 stmflash.c stmflash.h 和 上一节的Boot ...

  2. Centos7将本地源更换为网易源

    百度搜索: 网易源  点击进入网易开源镜像站 1. 备份当前 repo 文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS- ...

  3. [LeetCode] 152. Maximum Product Subarray 求最大子数组乘积

    Given an integer array nums, find the contiguous subarray within an array (containing at least one n ...

  4. 一键脚本解决Windows系统更新错误(0x80070003)

    新建文本,写入以下内容并保存为bat文件 REM 解决系统更新错误(0x80070003) pause net stop "Windows Update" rd /s/q &quo ...

  5. UDF——读取文件作为边界条件(类似profile的效果)

    本文编译工具:VC++ UDF Studio 该插件可以直接在Visual Studio中一键编译.加载.调试UDF源码,极大提高编写排错效率,且支持C++,MFC,Windows API和第三方库, ...

  6. CodeForces 487E Tourists(圆方树+线段树+树链剖分)

    题意 ​ \(n\) 个点 \(m\) 条边的无向连通图,每个点有点权,\(q\) 个要求,每次更新一个点的点权或查询两点间路径权值最小的点最小的路径. 思路 ​ 算是圆方树的板子吧?圆方树处理的主要 ...

  7. java-int数据的溢出

    数据的溢出: 当整数的数据大小超出了可以表示的范围,而程序中又没有做数值范围的检查时, 这个整型变量所输出的值将发生紊乱,且不是预期的运行结果. 01 //  整数值如果超出了自己所可以表示范围的最大 ...

  8. Linux搭建Nexus仓库+高可用方案

    Linux搭建nexus仓库 1.安装jdk 1.1 获取安装包,解压到指定目录: tar xf jdk.tar.gz -C /opt/export 1.2 配置环境变量: # vim /etc/pr ...

  9. Linux 分区管理器

    下面的列表没有特定的排名顺序.大多数分区工具应该存在于 Linux 发行版的仓库中. GParted 这可能是 Linux 发行版中最流行的基于 GUI 的分区管理器.你可能已在某些发行版中预装它.如 ...

  10. windows 下验证文件MD5

    CertUtil -hashfile C:\Users\admin\Downloads\aaa.txt MD5 CertUtil -hashfile C:\Users\admin\Downloads\ ...