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 属性的初始值,默认值为 None,default_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 属性的初始值,默认值为 None,default_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 中的一些数据结构,可能你目前并用不上他,但希望你以后需要的时候会想起它们 : -)

python3 collections模块_python的Collections 模块相关推荐

  1. python collections模块_Python 的collections模块

    前言: collections是实现了特定目标的容器,以提供python标准内建容器dict,list,set和tuple的替代选择. Counter Counter是一个dict子类,主要是用来对你 ...

  2. python内建模块_Python 内建模块

    1.内建模块: 在Python中,有一个内建模块,该模块中有一些常用函数;而该模块在Python启动后.且没有执行程序员所写的任何代码前,Python会首先加载该内建函数到内存.另外,该内建模块中的功 ...

  3. python中的模块_Python中的模块 | 萧小寒

    摘要 在编程语言中,Python被广大程序员誉为是一门"简单.优美.功能强大"的动态语言.在接触到Python这门语言时,多数人会被其简洁的语法.优美的格式和丰富的模块所震撼. 虽 ...

  4. 简述python中怎样导入模块_Python中导入模块的两种模式,import

    import import pandas import pandas as pd 使用函数方式:.(),或者.() 比如 pandas.read_csv("data/stock.csv&qu ...

  5. python必学的模块_Python常用的模块

    模块和包 1.1模块介绍模块定义:一系列功能的集合体 模块使用: import导入模块 或者 from ... import... 导入模块 模块分类:内置模块 自定义模块 第三方模块 模块加载顺序: ...

  6. python中自带的模块_python中的模块详解

    概念 python中的模块是什么?简而言之,在python中,一个文件(以".py"为后缀名的文件)就叫做一个模块,每一个模块在python里都被看做是一个独立的文件.模块可以被项 ...

  7. python xlrd模块_python之xlrd模块

    xlrd模块 一.xlrd模块 1.python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库,这两个适用于.xls格式有效 2. xlrd模块 ...

  8. python动态导入模块_Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析...

    本文实例讲述了Python动态导入模块:__import__.importlib.动态导入的使用场景.分享给大家供大家参考,具体如下: 相关内容: __import__ importlib 动态导入的 ...

  9. python中的types是什么模块_python的types模块

    python的types模块 python的types模块 1.types是什么: types模块中包含python中各种常见的数据类型,如IntType(整型),FloatType(浮点型)等等. ...

  10. python怎么导入数学模块_python怎么导入模块

    python中的模块即.py文件,模块的导入方式通常有两种:1是直接使用import语句导入:2是使用from..import..结构引入. 使用 import 导入模块的语法,但实际上 import ...

最新文章

  1. wordpress本地mysql_如何在本地搭建和运行wordpress
  2. python是什么编程教程-编程零基础应当如何开始学习 Python?
  3. 通过/proc/sys/net/ipv4/优化Linux下网络性能
  4. view函数_数据科学系列:数据处理(6)字符串函数基于R(二)
  5. Ajax--serialize应用表单数据序列化
  6. 新AirPods渲染图曝光:采用黑白灰金四种配色
  7. Gridview光棒效果
  8. 原来程序员的大部分时间并不是写代码
  9. 电脑如何查看x86与arm_电脑关联程序更改 如何更改电脑查看图片的方式
  10. String、StringBuffer、StringBuilder有什么区别
  11. deepin允许root登录_王者荣耀安卓免ROOT不用电脑修改战区2020最新版教程
  12. html5实现电子签名并下载
  13. 阿里云盾证书服务助力博客装逼成功
  14. 用HTML语言怎样打印出九九乘法表,jsp/javascript打印九九乘法表代码
  15. Struts2详细使用教程
  16. 请求头添加token
  17. 【工商银行科技菁英计划笔试】压缩字符串
  18. Joyoshare Media Cutter for Mac(智能媒体剪辑软件)激活版
  19. 解决jinja2模板中包含大括号的情况
  20. 果园大二下英方课学习姿势

热门文章

  1. linux ipc信号量
  2. ORA-30377 MV_CAPABILITIES_TABLE not found
  3. 学习笔记-Rabin-Karp哈希
  4. maven中如何打jar包
  5. 分享一个强大的弹出框
  6. GARFIELD@02-21-2005
  7. arcgis api 3.X 几种查询方式比较
  8. [bzoj4538][Hnoi2016]网络
  9. [bzoj3668][Noi2014]起床困难综合症/[洛谷3613]睡觉困难综合症
  10. 第二章 springboot+mybatis