转发连接:https://www.cnblogs.com/mrchige/p/6379831.html

转发用于自己学习,并无其他商用

Collections 模块

知识点

  • Counter 类
  • defaultdict 类
  • namedtuple 类

在这个实验我们会学习 Collections 模块。这个模块实现了一些很好的数据结构,它们能帮助你解决各种实际问题。

>>> import collections

这是如何导入这个模块,现在我们来看看其中的一些类。

1. Counter

Counter 是一个有助于 hashable 对象计数的 dict 子类。它是一个无序的集合,其中 hashable 对象的元素存储为字典的键,它们的计数存储为字典的值,计数可以为任意整数,包括零和负数。

我们可以这样查看 Counter 的帮助信息,事实上这些信息来源于 Counter 的文档字符串(collections.Counter.__doc__)。

下面我们来看一个例子,例子中我们查看 Python 的 LICENSE 文件中某些单词出现的次数。

1.1. Counter 示例

>>> from collections import Counter
>>> import re >>> path = '/usr/lib/python3.4/LICENSE.txt' >>> words = re.findall('\w+', open(path).read().lower()) >>> Counter(words).most_common(10) [('the', 80), ('or', 78), ('1', 66), ('of', 61), ('to', 50), ('and', 48), ('python', 46), ('in', 38), ('license', 37), ('any', 37)] 

Counter 对象有一个叫做 elements() 的方法,其返回的序列中,依照计数重复元素相同次数,元素顺序是无序的。

>>> c = Counter(a=4, b=2, c=0, d=-2) >>> list(c.elements()) ['a', 'a', 'a', 'a', 'b', 'b'] 

most_common() 方法返回最常见的元素及其计数,顺序为最常见到最少。

>>> Counter('abracadabra').most_common(3)
[('a', 5), ('r', 2), ('b', 2)] 

2. defaultdict

defaultdict 是内建 dict 类的子类,它覆写了一个方法并添加了一个可写的实例变量。其余功能与字典相同。

defaultdict() 第一个参数提供了 default_factory 属性的初始值,默认值为 Nonedefault_factory 属性值将作为字典的默认数据类型。所有剩余的参数与字典的构造方法相同,包括关键字参数。

同样的功能使用 defaultdict 比使用 dict.setdefault 方法快。

defaultdict 用例

>>> from collections import defaultdict
>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)] >>> d = defaultdict(list) >>> for k, v in s: ... d[k].append(v) ... >>> d.items() dict_items([('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]) 

在例子中你可以看到,即使 defaultdict 对象不存在某个,它会自动创建一个空列表。

3. namedtuple

命名元组有助于对元组每个位置赋予意义,并且让我们的代码有更好的可读性和自文档性。你可以在任何使用元组地方使用命名元组。在例子中我们会创建一个命名元组以展示为元组每个位置保存信息。

>>> from collections import namedtuple
>>> Point = namedtuple('Point', ['x', 'y']) # 定义命名元组 >>> p = Point(10, y=20) # 创建一个对象 >>> p Point(x=10, y=20) >>> p.x + p.y 30 >>> p[0] + p[1] # 像普通元组那样访问元素 30 >>> x, y = p # 元组拆封 >>> x 10 >>> y 20 

总结

这个实验我们使用了 Collections 中的一些数据结构,可能你目前并用不上他,但希望你以后需要的时候会想起它们 : -)

知识点

  • Counter 类
  • defaultdict 类
  • namedtuple 类

在这个实验我们会学习 Collections 模块。这个模块实现了一些很好的数据结构,它们能帮助你解决各种实际问题。

>>> import collections

这是如何导入这个模块,现在我们来看看其中的一些类。

1. Counter

Counter 是一个有助于 hashable 对象计数的 dict 子类。它是一个无序的集合,其中 hashable 对象的元素存储为字典的键,它们的计数存储为字典的值,计数可以为任意整数,包括零和负数。

我们可以这样查看 Counter 的帮助信息,事实上这些信息来源于 Counter 的文档字符串(collections.Counter.__doc__)。

下面我们来看一个例子,例子中我们查看 Python 的 LICENSE 文件中某些单词出现的次数。

1.1. Counter 示例

>>> from collections import Counter
>>> import re >>> path = '/usr/lib/python3.4/LICENSE.txt' >>> words = re.findall('\w+', open(path).read().lower()) >>> Counter(words).most_common(10) [('the', 80), ('or', 78), ('1', 66), ('of', 61), ('to', 50), ('and', 48), ('python', 46), ('in', 38), ('license', 37), ('any', 37)] 

Counter 对象有一个叫做 elements() 的方法,其返回的序列中,依照计数重复元素相同次数,元素顺序是无序的。

>>> c = Counter(a=4, b=2, c=0, d=-2) >>> list(c.elements()) ['a', 'a', 'a', 'a', 'b', 'b'] 

most_common() 方法返回最常见的元素及其计数,顺序为最常见到最少。

>>> Counter('abracadabra').most_common(3)
[('a', 5), ('r', 2), ('b', 2)] 

2. defaultdict

defaultdict 是内建 dict 类的子类,它覆写了一个方法并添加了一个可写的实例变量。其余功能与字典相同。

defaultdict() 第一个参数提供了 default_factory 属性的初始值,默认值为 Nonedefault_factory 属性值将作为字典的默认数据类型。所有剩余的参数与字典的构造方法相同,包括关键字参数。

同样的功能使用 defaultdict 比使用 dict.setdefault 方法快。

defaultdict 用例

>>> from collections import defaultdict
>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)] >>> d = defaultdict(list) >>> for k, v in s: ... d[k].append(v) ... >>> d.items() dict_items([('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]) 

在例子中你可以看到,即使 defaultdict 对象不存在某个,它会自动创建一个空列表。

3. namedtuple

命名元组有助于对元组每个位置赋予意义,并且让我们的代码有更好的可读性和自文档性。你可以在任何使用元组地方使用命名元组。在例子中我们会创建一个命名元组以展示为元组每个位置保存信息。

>>> from collections import namedtuple
>>> Point = namedtuple('Point', ['x', 'y']) # 定义命名元组 >>> p = Point(10, y=20) # 创建一个对象 >>> p Point(x=10, y=20) >>> p.x + p.y 30 >>> p[0] + p[1] # 像普通元组那样访问元素 30 >>> x, y = p # 元组拆封 >>> x 10 >>> y 20 

总结

这个实验我们使用了 Collections 中的一些数据结构,可能你目前并用不上他,但希望你以后需要的时候会想起它们 : -)

转载于:https://www.cnblogs.com/andingding-blog/p/9138244.html

python的collections模块的学习相关推荐

  1. python:collections模块

    Counter类 介绍:A counter tool is provided to support convenient and rapid tallies 构造:class collections. ...

  2. Python中collections模块

    目录 Python中collections模块:模块实现了特定目标的容器,以提供Python标准内建容器 dict.list.set.tuple 的替代选择. Counter:字典的子类,提供了可哈希 ...

  3. Python中Collections模块的Counter容器类使用教程

    Python中Collections模块的Counter容器类使用教程 1.collections模块 collections模块自Python2.4版本开始被引入,包含了dict,set,list, ...

  4. Python的collections模块中namedtuple结构使用示例

    namedtuple顾名思义,就是名字+元组的数据结构,下面就来看一下Python的collections模块中namedtuple结构使用示例 namedtuple 就是命名的 tuple,比较像 ...

  5. python中collections模块_Python的collections模块

    python的collections模块 collections模块 Counter:字典的子类,提供了可哈希对象的计数功能 常用方法: elements():返回一个迭代器,每个元素重复计算的个数, ...

  6. python有序队列_【python】collections模块(有序字典,计数器,双向队列)

    collections模块基本介绍 我们都知道,Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections模块在这些内置数据类型的基础上 ...

  7. Python之collections模块详细实例

    Python作为一个"内置电池"的编程语言,标准库里面拥有非常多好用的模块.比如今天想给大家 介绍的collections 就是一个非常好的例子. 基本介绍 我们都知道,Pytho ...

  8. 一. python的collections模块

    一.collections模块 Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections模块在这些内置数据类型的基础上,提供了几个额外 ...

  9. python爬虫 selenium模块的学习

    爬取流程 导入selenium模块中的webdriver包 实例化webdriver 准备url 打开网页 定位标签元素 执行动作 获取需要的信息 关闭浏览器 新实例 # 新版本 from selen ...

最新文章

  1. rtems线程管理与调度(一)
  2. 国内与国外摄影爱好者的区别
  3. Ubuntu下hadoop的安装与简单应用
  4. 中国人民银行:关于防范代币发行融资风险的公告
  5. 【学习笔记】35、定义自己的异常类
  6. 页面某一个元素跟随输入框输入内容动态变化
  7. 推荐两款实用工具——hcache和SQLPad
  8. 帆软按钮控件变查询_帆软报表(多sheet)自定义分页查询
  9. 吴立德机器学习笔记(转)
  10. 「移动开发」iuap mobile玩转前端自动化构建
  11. 2010年3月份第二周51aspx发布源码
  12. MySQL WARN: Establishing SSL connection ...... is not recommended.
  13. OpenOffice源代码编译及安装
  14. 远程控制软件也要有plan B备选方案
  15. 评价类问题中的模糊综合评价法
  16. python程序设计pdf机械出版_Python程序设计
  17. springboot接口签名统一效验_Spring Boot 优雅地实现接口参数校验
  18. 网站重要的推广方式——博客推广(上:什么是博客推广)
  19. 安徽农业大学计算机考研分数线,安徽农业大学考研录取分数线
  20. 怎么开通商家转账到零钱?

热门文章

  1. python文件拷贝到其他盘符_Python:文件操作技巧(File operation)
  2. python 随机数_python项目实战:实现蒙特卡罗方法,求物体阴影面积
  3. Anaconda安装及简单使用
  4. android 链式结构,Android 架构师之路10 设计模式之责任链模式
  5. python 字典查询比列表快_为什么python字典要比列表快以及哈希查找解释。
  6. python控制视频_控制Python面向对象的访问
  7. 如何用html构建ios应用,使用HTML5构建iOS原生APP(5)
  8. 神经进化算法——利用NEAT算法解决迷宫导航问题(基于NEAT-Python)
  9. android seekbar 圆角,android - 最小或最大时,圆角android seekbar的ui奇怪行为 - 堆栈内存溢出...
  10. wpf 执行mysql命令_WPF(.net 3.5)使用MySql.Data.dll进行mysql数据库操作