我的编程空间,编程开发者的网络收藏夹
学习永远不晚

collections模块如何在Python中使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

collections模块如何在Python中使用

这期内容当中小编将会给大家带来有关collections模块如何在Python中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

Python主要用来做什么

Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;4、嵌入式应用开发;5、游戏开发;6、桌面应用开发。

Counter

Counter()是字典对象的子类。Counter()可接收一个可迭代遍历的对象(例如字符串、列表或元组)作为参数,并返回计数器字典。字典的键将是可遍历对象中的唯一元素,每个键的值将是可迭代对象中的每个唯一元素对应的计数。

首先,让我们先从collections模块导入Counter这个数据类型:

from collections import Counter

要创建Counter对象,就像将其分配给其他任何对象类一样,将其分配给变量。您唯一要确保的是传递给它的参数是可迭代的对象。

lst = [1, 2, 3, 3, 2, 1, 1, 1, 2, 2, 3, 1, 2, 1, 1]counter = Counter(lst)

我们可以使用简单的打印功能比如print(counter)来查看我们获得的新的对象,它看起来像个字典,如下所示:

Conter ({1:7,2:2:5,3:3})

您可以使用键值key访问任何计数器条目,如下所示。这与从标准Python字典中提取元素的方式完全相同。

lst = [1, 2, 3, 3, 2, 1, 1, 1, 2, 2, 3, 1, 2, 1, 1]counter = Counter(lst)print(counter[1]) # 返回7。1的数量有7个

most_common()函数

到目前为止,Counter对象最有用的功能是most_common()函数。将其应用于Counter对象时,它将返回N个最常见元素及其计数的列表,按从最常见到最不常见的顺序排列。

lst = [1, 2, 3, 3, 2, 1, 1, 1, 2, 2, 3, 1, 2, 1, 1]counter = Counter(lst)print(counter.most_common(2)) # 返回最常见两个元素及其计数

上面的代码打印出以下元组列表:

[(1,7),(2,5)]

每个元组的第一个元素是列表中的唯一原始,每个元组的第二个元素是计数。这是一种快速简便的方法,实现比如“获取列表中最常见的3个元素及其计数”的功能。

要了解有关Counter功能的更多信息,请查阅官方文档。

defaultdict

defaultdict工作起来完全像一个普通的Python字典,但它有额外的奖励。当您试图访问一个不存在的键,它不会引发错误,而是使用不存在的键创建新的key,其对应的默认值是根据创建defaultdict对象时作为参数传递的数据类型自动设置的。请看下面的代码作为示例。

from collections import defaultdictnames_dict = defaultdict(int)names_dict["Bob"] = 1names_dict["Katie"] = 2sara_number = names_dict["Sara"]print(names_dict)

在上面的示例中,int作为默认初始化值传递给我们的defaultdict对象。接下来,为每个键"Bob"和"Katie"赋值。但是在最后一行,我们尝试访问一个尚未定义的键,即“ Sara”的键。

在普通字典中,这将引发错误。使用defaultdict后不再报错,而是自动以"Sara"创建一个新键key,其初始化值为0,是因为我们指定了int数据类型作为初始化值。

因此,最后一行打印出具有所有3个名称和相应值的字典。

defaultdict(<class 'int'>, {'Bob': 1, 'Katie': 2, 'Sara': 0})

如果要将设置列表类型数据做为一个key的初始化值,我们只需设置names_dict = defaultdict(list),此时“Sara”将使用空列表初始化[]。此时打印结果如下所示:

defaultdict(<class 'int'>, {'Bob': 1, 'Katie': 2, 'Sara': []})

要了解有关defaultdict功能的更多信息,请查阅官方文档。

deque

deque队列是在计算机科学里最基本的数据结构,遵循先入先出(FIFO)的原理。简单来说,这意味着添加到队列中的第一个对象也必须是要删除的第一个对象。我们只能在队列的前面插入内容,而只能从队列的后面删除内容,而队列中间没有任何动作。

collections模块提供的deque对象是能实现队列数据结构的优化版本。该功能的主要特色是能够保持队列的大小,即如果将队列的最大长度设置为10,则将deque根据FIFO原理添加和删除元素以保持最大长度始终为10。这是到目前为止,Python中队列的最佳实现。

让我们从一个例子开始。我们将创建一个deque对象,然后使用从1到10的整数进行初始化。

from collections import dequemy_queue = deque(maxlen=10)for i in range(10):    my_queue.append(i+1)print(my_queue)

在上面的代码中,我们首先初始化deque,指定我们希望它始终保持最大长度为10。其次,当我们通过循环将值插入到队列中时。注意,填充队列的功能与使用常规Python列表的方式完全相同。最后,我们打印出结果。

deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], maxlen=10)

由于队列中有一个maxlen=10,并且循环中添加了10个元素,因此队列中包含了从1到10的所有数字。现在,让我们看看添加更多数字时会发生什么。

for i in range(10, 15):    my_queue.append(i+1)print(my_queue)

在上面的代码中,我们在队列中添加了另外5个元素,数字从11到15。但是我们的队列只有一个,且maxlen=10。因此必须删除一些元素,才能插入新的元素。由于队列必须遵循FIFO原则,因此它将删除最先插入队列中的前5个元素,即[1、2、3、4、5]。打印语句的结果如下:

deque([6, 7, 8, 9, 10, 11, 12, 13, 14, 15], maxlen=10)

要了解有关该功能的更多信息deque,请查阅官方文档。

namedtuple

在Python中创建常规元组时,其元素是通用的且未命名,这迫使您记住每个元组元素的确切索引。可以使用具名元组namedtuple来解决这个问题。

该namedtuple()返回与用于所述元组中的每个位置和一个通用名固定名称的元组namedtuple对象。要使用namedtuple,请先为其创建一个模板。下面的代码创建一个namedtuple名为Person的模板,其属性为name,age和job。

from collections import namedtuplePerson = namedtuple('Person', 'name age job')

创建模板后,您可以使用它来创建namedtuple对象。让我们使用Person模板为2个人创建2个namedtuple对象,并打印它们。

Person = namedtuple('Person', 'name age job')Mike = Person(name='Mike', age=30, job='Data Scientist')Kate = Person(name="Kate", age=28, job='Project Manager')print(Mike)print(Kate)

上面的代码非常简单。我们使用namedtuple 模板的所有属性来初始化“人员” ,以后可以直接使用Mike或Kate使用元组元素,而不用再使用索引了。上面的打印语句将给出以下结果:

Person(name='Mike', age=30, job='Data Scientist')Person(name='Kate', age=28, job='Project Manager')

因此,namedtuple能够更容易地使用,更合适元组对象的组织,可读性也更强。

要了解更多关于namedtuple的功能,请查阅官方文档。

OrderedDict

由于原文未介绍collections模块中的有序字典结构而OrderedDict又非常重要,这部分由大江狗手动新增。

在Python 3.5及以前之前版本,Python的字典dict是无序的。如果先键值A先插入字典,键值B后插入字典,但是当你打印字典的Keys列表时,你会发现B可能在A的前面。对于无序字典,每次打印字典时每次显示元素的顺序都不一样。如果你的Python版本较老,需要借助collections模块提供的OrderedDict实现有序字典。

OrderedDict类似于正常的字典,只是它记住了元素插入的顺序。当对有序的词字典上迭代时,返回元素的顺序是按第一次添加元素的顺序进行。当元素删除时,排好序的词典保持着排序的顺序;但是当新元素添加时,就会被添加到末尾。

OrderedDict实现方式如下:

dd = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}#按key排序od_by_key = collections.OrderedDict(sorted(dd.items(), key=lambda t: t[0]))print(od_by_key)#按照value排序od_by_value = collections.OrderedDict(sorted(dd.items(),key=lambda t:t[1]))print(od_by_value)#输出OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])

上述就是小编为大家分享的collections模块如何在Python中使用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

collections模块如何在Python中使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

collections模块如何在Python中使用

这期内容当中小编将会给大家带来有关collections模块如何在Python中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据
2023-06-14

如何在Python项目中使用collections模块

这篇文章主要介绍了如何在Python项目中使用collections模块,编程网小编觉得不错,现在分享给大家,也给大家做个参考,一起跟随编程网小编来看看吧!Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;
2023-06-06

Python中 Collections 模块如何使用

今天就跟大家聊聊有关Python中 Collections 模块如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。collections模块是一个不用不知道,一用就上瘾的模块。这
2023-06-15

Python内置模块Collections如何使用

本篇内容主要讲解“Python内置模块Collections如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python内置模块Collections如何使用”吧!1、模块说明collec
2023-06-29

Python collections模块的使用技巧

一般来讲,python的collections是用于存储数据集合(比如列表list, 字典dict, 元组tuple和集合set)的容器。这些容器内置在Python中,可以直接使用。该collections模块提供了额外的,高性能的数据类型
2022-06-02

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

namedtuple 就是命名的 tuple,比较像 C 语言中 struct。一般情况下的 tuple 是 (item1, item2, item3,...),所有的 item 都只能按照 index 访问,没有明确的称呼,而 named
2022-06-04

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

1.collections模块 collections模块自Python 2.4版本开始被引入,包含了dict、set、list、tuple以外的一些特殊的容器类型,分别是: OrderedDict类:排序字典,是字典的子类。引入自2.7。
2022-06-04

如何在Python中使用pickle模块

这篇文章将为大家详细讲解有关如何在Python中使用pickle模块,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科
2023-06-14

如何在Python中使用errno模块

本篇文章给大家分享的是有关如何在Python中使用errno模块,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python的数据类型有哪些?python的数据类型:1. 数字类
2023-06-14

random模块如何在python中使用

本篇文章为大家展示了random模块如何在python中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. random.random()用于生成一个0到1的随机浮点数: 0 <= n < 1.
2023-06-06

如何在python中使用pyglet模块

这期内容当中小编将会给大家带来有关如何在python中使用pyglet模块,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的
2023-06-15

如何在python中使用scipy.interpolate模块

如何在python中使用scipy.interpolate模块?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。python主要应用领域有哪些1、云计算,典型应用OpenSta
2023-06-14

如何在python中使用glom模块

本篇文章给大家分享的是有关如何在python中使用glom模块,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。简单使用我们来看看最简单的用法:d = {"a": {"b": {"
2023-06-14

threading 模块如何在Python中使用

threading 模块如何在Python中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。创建线程使用 threading 模块创建线程通常有两种方式:1)使用 thr
2023-06-14

如何在Python中使用openpyxl模块

这篇文章主要介绍了如何在Python中使用openpyxl模块,此处给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网
2023-06-06

如何在python中使用scrapy模块

这篇文章将为大家详细讲解有关如何在python中使用scrapy模块,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。二、基本使用2.1 环境安装1.linux和mac操作系统:pip inst
2023-06-06

如何在Python中使用copy模块

这篇文章给大家介绍如何在Python中使用copy模块,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂、容易
2023-06-14

如何在python中使用sys模块

本篇文章为大家展示了如何在python中使用sys模块,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是解决问题,而
2023-06-14

如何在python中中使用excel模块库

本篇文章为大家展示了如何在python中中使用excel模块库,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。openpyxlopenpyxl是⼀个Python库,用于读取/写⼊Excel 2010
2023-06-15

Python的一个内置模块Collections怎么使用

这篇文章主要讲解了“Python的一个内置模块Collections怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python的一个内置模块Collections怎么使用”吧!1、模
2023-07-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录