python的collections模块的学习
转发连接: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
属性的初始值,默认值为 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 中的一些数据结构,可能你目前并用不上他,但希望你以后需要的时候会想起它们 : -)
转载于:https://www.cnblogs.com/andingding-blog/p/9138244.html
python的collections模块的学习相关推荐
- python:collections模块
Counter类 介绍:A counter tool is provided to support convenient and rapid tallies 构造:class collections. ...
- Python中collections模块
目录 Python中collections模块:模块实现了特定目标的容器,以提供Python标准内建容器 dict.list.set.tuple 的替代选择. Counter:字典的子类,提供了可哈希 ...
- Python中Collections模块的Counter容器类使用教程
Python中Collections模块的Counter容器类使用教程 1.collections模块 collections模块自Python2.4版本开始被引入,包含了dict,set,list, ...
- Python的collections模块中namedtuple结构使用示例
namedtuple顾名思义,就是名字+元组的数据结构,下面就来看一下Python的collections模块中namedtuple结构使用示例 namedtuple 就是命名的 tuple,比较像 ...
- python中collections模块_Python的collections模块
python的collections模块 collections模块 Counter:字典的子类,提供了可哈希对象的计数功能 常用方法: elements():返回一个迭代器,每个元素重复计算的个数, ...
- python有序队列_【python】collections模块(有序字典,计数器,双向队列)
collections模块基本介绍 我们都知道,Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections模块在这些内置数据类型的基础上 ...
- Python之collections模块详细实例
Python作为一个"内置电池"的编程语言,标准库里面拥有非常多好用的模块.比如今天想给大家 介绍的collections 就是一个非常好的例子. 基本介绍 我们都知道,Pytho ...
- 一. python的collections模块
一.collections模块 Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections模块在这些内置数据类型的基础上,提供了几个额外 ...
- python爬虫 selenium模块的学习
爬取流程 导入selenium模块中的webdriver包 实例化webdriver 准备url 打开网页 定位标签元素 执行动作 获取需要的信息 关闭浏览器 新实例 # 新版本 from selen ...
最新文章
- rtems线程管理与调度(一)
- 国内与国外摄影爱好者的区别
- Ubuntu下hadoop的安装与简单应用
- 中国人民银行:关于防范代币发行融资风险的公告
- 【学习笔记】35、定义自己的异常类
- 页面某一个元素跟随输入框输入内容动态变化
- 推荐两款实用工具——hcache和SQLPad
- 帆软按钮控件变查询_帆软报表(多sheet)自定义分页查询
- 吴立德机器学习笔记(转)
- 「移动开发」iuap mobile玩转前端自动化构建
- 2010年3月份第二周51aspx发布源码
- MySQL WARN: Establishing SSL connection ...... is not recommended.
- OpenOffice源代码编译及安装
- 远程控制软件也要有plan B备选方案
- 评价类问题中的模糊综合评价法
- python程序设计pdf机械出版_Python程序设计
- springboot接口签名统一效验_Spring Boot 优雅地实现接口参数校验
- 网站重要的推广方式——博客推广(上:什么是博客推广)
- 安徽农业大学计算机考研分数线,安徽农业大学考研录取分数线
- 怎么开通商家转账到零钱?
热门文章
- python文件拷贝到其他盘符_Python:文件操作技巧(File operation)
- python 随机数_python项目实战:实现蒙特卡罗方法,求物体阴影面积
- Anaconda安装及简单使用
- android 链式结构,Android 架构师之路10 设计模式之责任链模式
- python 字典查询比列表快_为什么python字典要比列表快以及哈希查找解释。
- python控制视频_控制Python面向对象的访问
- 如何用html构建ios应用,使用HTML5构建iOS原生APP(5)
- 神经进化算法——利用NEAT算法解决迷宫导航问题(基于NEAT-Python)
- android seekbar 圆角,android - 最小或最大时,圆角android seekbar的ui奇怪行为 - 堆栈内存溢出...
- wpf 执行mysql命令_WPF(.net 3.5)使用MySql.Data.dll进行mysql数据库操作