1、计数器(counter)

Counter是对字典类型的补充,用于追踪值的出现次数。

ps:具备字典的所有功能 + 自己的功能

我们从中挑选一些相对常用的方法来举例:

在上面的例子我们可以看出,counter方法返回的是一个字典,它将字符串中出现的所有字符都进行了统计。在这里再介绍一下update方法,这个update方法是将两次统计的结果相加,和字典的update略有不同。

  

2、有序字典(orderedDict )

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

我们都知道字典本来是无序的,它依靠key,value之间的索引进行匹配,那么有序字典的原理是什么呢? 原理: dic = {'k2':1,'k1':2},li = ['k1','k2'],这个字典在内部维护了一个key列表。

从上面的图中我们就知道,尽管我们定义的字典是从1到8按顺序写的,但是在打印的过程当中并没有按到我们希望的顺序打印。这个时候有序字典的优势就出来了:

3、默认字典(defaultdict)

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

用代码实现了下述功能

有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {'k1': 大于66 'k2': 小于66}

看出神奇的地方了么?我们可以不需要在空字典中指定value的值,直接执行append,就可以向字典中插入值了,就是因为我们使用defauldict(list)方式定义了一个value值默认为list的字典。

否则我们就要这么写才行:

 普通字典的实现方式

4、可命名元组(namedtuple)

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

主要用于‘坐标’的表示。用法如下:

5、双向队列(deque)

一个线程安全的双向队列:双向队列我们可以理解为两个栈底相连的栈,和队列的先进先出不同,元素可以从这个队列的两端分别加入或者删除值。尽管list其实完全可以实现这个功能,但是python的collections类还是很贴心的把这些方法都归纳了出来,歪果仁就是有意思啊~~~

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/bruceg/p/5150367.html

day3-python的基础类源码解析——collection类相关推荐

  1. JDK源码解析 InputStream类就使用了模板方法模式

    JDK源码解析 InputStream类就使用了模板方法模式. 在InputStream类中定义了多个 read() 方法,如下: public abstract class InputStream ...

  2. JDK源码解析 Integer类使用了享元模式

    JDK源码解析 Integer类使用了享元模式. 我们先看下面的例子: public class Demo {public static void main(String[] args) {Integ ...

  3. JDK源码解析--Object类

    作为一名java开发,肯定会知道object类,object类是所有类的基类,当一个类没有直接继承任何类时,默认继承object类,所以也被称之为"上帝类". 目录 一.继承Obj ...

  4. ScheduledThreadPool 源码解析——定时类线程池是如何工作的

    文章目录 引言 一.ScheduledThreadPool 使用示例 1. 延时类的定时任务 `schedule` 2. 延时类,固定周期执行任务 `scheduleAtFixedRate` 3. 延 ...

  5. pytorch python区别_pytorch源码解析:Python层 pytorchmodule源码

    尝试使用了pytorch,相比其他深度学习框架,pytorch显得简洁易懂.花时间读了部分源码,主要结合简单例子带着问题阅读,不涉及源码中C拓展库的实现. 一个简单例子 实现单层softmax二分类, ...

  6. JDK源码解析-Collection.iterator方法

    对上面的代码大家应该很熟,使用迭代器遍历集合,获取集合中的元素. 而单列集合获取迭代器的方法就使用到了工厂方法模式. 我们看通过类图看看结构: Collection接口是抽象工厂类,ArrayList ...

  7. python threading ThreadPoolExecutor源码解析

    future: 未来对象,或task的返回容器 1. 当submit后: def submit(self, fn, *args, **kwargs):with self._shutdown_lock: ...

  8. Python之字符串源码解析

    def divmod(x, y):这个方法主要用于分页.跟int作用是一样的.例子: a=10#总条数b=5/#每页显示多少条c=divmod(a,b)#print(c)#c为一个元组 (2, 0) ...

  9. Spring源码解析-核心类之XmlBeanDefinitionReader

    XmlBeanDefinitionReader XML配置文件的读取是 Spring 中重要的功能,因为 Spring 的大部分功能都是以配置作为切入点的,那么我们可以从 XmlBeanDefinit ...

  10. JDK源码解析-Runtime类

    Runtime类就是使用的单例设计模式 通过源代码查看使用的是哪儿种单例模式 public class Runtime {private static Runtime currentRuntime = ...

最新文章

  1. 腾讯开源首个医疗AI项目,业内首个3D医疗影像大数据预训练模型
  2. 060_JavaScript作用域
  3. MyBatis-Plus 代码生成器
  4. php通过Mysqli和PDO连接mysql数据详解
  5. 中台之上(十五):被忽视的产品目录
  6. linux wifi pro6818,GEC6818连接Ubuntu,下载程序至开发板
  7. openssl生成私钥公钥的步骤
  8. ubuntu安装php7-mysql,ubuntu上安装php7.0+nginx+mysql
  9. LINUX 软件安装。
  10. Atitit web 视频播放器classid clsid 大总结quicktime vlc 1 Classid的用处
  11. 获取窗口句柄 c语言,VC++编程获取窗口句柄的方法小结分享
  12. python中英文古风排版_古风排版 - Calculus9 - 博客园
  13. bbys_tu_2016
  14. Service Temporarily Unavailable
  15. 【VTK+有限元后处理】符号化矢量场绘制
  16. 【LeetCode】《剑指Offer》第Ⅰ篇⊰⊰⊰ 3 - 11题
  17. Python递归函数返回阶乘
  18. LruCache算法原理解析
  19. 织梦cms模板下载:广告品牌设计网站织梦模板
  20. 2021-10-26 数据存储的基本原理

热门文章

  1. WIN10电脑如何显示控制面板
  2. 下划线(Underline)与低线(Lowline)的差异
  3. 开发机至少要有16G内存
  4. jquery_ajax_js,浅析jQuery Ajax通用js封装
  5. linux下编译fortran非法字符,linux下fortran中編譯代碼時“undefined reference to `_gfortran_st_”錯誤...
  6. C# string转char数组 string转char[]
  7. java 变量 string_java中String类型变量的赋值问题
  8. Windows下,Unicode、UTF8,GBK(GB2312)互转
  9. python环境下数据操作_在windows环境下使用Python操作spatialite数据库
  10. windows下怎么用basename_比较下养殖用铁丝网还是尼龙网,你会怎么选择?