返回顶部
首页 > 资讯 > 后端开发 > Python >Python中 Collections 模块如何使用
  • 186
分享到

Python中 Collections 模块如何使用

2023-06-15 23:06:45 186人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

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

今天就跟大家聊聊有关python中 Collections 模块如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

collections模块是一个不用不知道,一用就上瘾的模块。这里主要介绍OrderedDict类、defaultdict类、Counter类、namedtuple类和deque类。

collections

collections的常用类型有:

  • 计数器(Counter)

  • 双向队列(deque)

  • 默认字典(defaultdict)

  • 有序字典(OrderedDict)

  • 可命名元组(namedtuple)

Counter

计数器(counter)以字典的形式返回序列中各个字符出现的次数,值为key,次数为value

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

import collections  counter = collections.Counter("My name is Runsen") print(counter)

输出如下

Counter({' ': 3, 'n': 3, 'e': 2, 's': 2, 'M': 1, 'y': 1, 'a': 1, 'm': 1, 'i': 1, 'R': 1, 'u': 1})

取得元素重复次数的值

print(counter[' ']) 3

elements()取得计数器中的所有元素。

注:此处非所有元素集合,而是包含所有元素集合的迭代器.

counter = collections.Counter('abcabcabcdabcdef')  print(counter) # 输出如下 Counter({'a': 4, 'b': 4, 'c': 4, 'd': 2, 'e': 1, 'f': 1})  print(counter.elements()) # 输出如下 <itertools.chain object at 0x0000025B1477BF98>  print(list(counter.elements())) # 输出如下 ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'c', 'd', 'd', 'e', 'f']

将Counter按照value从大到小排列,获取前N个元素,需要使用函数most_common

# most_common(N)数量从大到小排列,获取前N个元素  print(counter.most_common(3)) # 输出如下 [('a', 4), ('b', 4), ('c', 4)]

sorted将Counter中的key进行排序,返回的是所有key的列表

# sorted()列出所有不同的元素并排序  print(sorted(counter))  # 输出如下 ['a', 'b', 'c', 'd', 'e', 'f']

将Counter转换成字符串,字符串的join方法可以解决。注意不是原来的模样。

# 转换成字符串  print(''.join(counter.elements())) # aaaabbbbccccddef print(''.join(list(counter.elements())))

update()更新计数器,其实在原本的counter更新计数器,如果原来没有,则新建key,如果有value则加一

# update()更新计数器, d = collections.Counter('a')  counter.update(d)  print(counter)  # 输出如下 Counter({'a': 5, 'b': 4, 'c': 4, 'd': 2, 'e': 1, 'f': 1})

update()更新计数器,那么subtract()相减计数器的values,即原来的计数器中的每一个元素的数量减去后添加的元素的数量

counter.subtract('abdabcabcg')  print(counter)  # 输出如下 Counter({'a': 2, 'c': 2, 'b': 1, 'd': 1, 'e': 1, 'f': 1, 'g': -1})

deque

deque支持从任意一端增加和删除元素。更为常用的两种结构,就是栈和队列。

deque的常见操作

#定义一个空的双向队列 d = collections.deque()  #从右端增加元素 d.extend("Runsen")  d.append("Maoli") d.append("Python") d.append("king")  #从左端增加元素 d.appendleft('left') print(d) # 输出如下 (注意:extend和append的区别) deque(['left', 'R', 'u', 'n', 's', 'e', 'n', 'Maoli', 'Python', 'king'])  # reverse()反转队列  print(d.reverse()) d.reverse() print(d) # 输出如下 None deque(['king', 'Python', 'Maoli', 'n', 'e', 's', 'n', 'u', 'R', 'left'])   d.reverse() d.extend(['qq','ww','ee'])  print(d)  # deque(['left', 'R', 'u', 'n', 's', 'e', 'n', 'Maoli', 'Python', 'king', 'qq', 'ww', 'ee'])   # count()计数  print(d.count('R')) # 输出如下 1  # clear()清空队列  d.clear()  print(d)  # 输出如下 deque([])  # index()取得元素下标  print(d.index('Maoli')) # 输出如下 7  # insert()指定位置插入元素  d.insert(1,'Runsen')  print(d)  # deque(['left', 'Runsen',R', 'u', 'n', 's', 'e', 'n', 'Maoli', 'Python', 'king', 'qq', 'ww', 'ee'])

OrderedDict

使用dict时要保持Key的顺序,可以用OrderedDict。

from collections import OrderedDict  dic = OrderedDict()  dic['k1'] = 'v1'  dic['k2'] = 'v2'  dic['k3'] = 'v3'  print(dic)  # 输出如下 OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])  # 字典所有的键  print(dic.keys()) # 输出如下  odict_keys(['k1', 'k2', 'k3'])      # 字典所有值  print(dic.values()) # 输出如下 odict_values(['v1', 'v2', 'v3'])      # items() 方法以列表返回可遍历的(键, 值) 元组数组  print(dic.items())  # 输出如下 odict_items([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])       #pop()方法,删除指定的键值  dic.pop('k1')   print(dic)  # 输出如下 OrderedDict([('k2', 'v2'), ('k3', 'v3')])   #popitem()方法,默认删除字典最后一个元素  dic.popitem()  print(dic)  # 输出如下 OrderedDict([('k2', 'v2')])  # update()更新字典  dic.update({'k1':'v1111','k10':'v10'})  print(dic)  # 输出如下 OrderedDict([('k2', 'v2'), ('k1', 'v1111'), ('k10', 'v10')])

OrderedDict和字典操作完全相同,区别在于OrderedDict的Key会按照插入的顺序排列,不是Key本身排序

>>> from collections import OrderedDict >>> d = dict([('a', 1), ('b', 2), ('c', 3)]) >>> d # dict的Key是无序的 {'a': 1, 'c': 3, 'b': 2} >>> od = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) >>> od # OrderedDict的Key是有序的 OrderedDict([('a', 1), ('b', 2), ('c', 3)])

defaultdict

在使用字典的时候, 如果在使用不存在的key的时候发生KeyError这样的一个报错,  这时候就该defaultdict登场了。

defaultdict接受一个工厂函数作为参数来构造:dict =defaultdict(  factory_function)这个factory_function可以是list、set、str等等,作用是当key不存在时,返回的是工厂函数的默认值,比如list对应[  ],str对应的是空字符串,set对应set( ),int对应0,如下举例:

from collections import defaultdict  dict1 = defaultdict(int) dict2 = defaultdict(set) dict3 = defaultdict(str) dict4 = defaultdict(list) dict1[2] ='two'  print(dict1[1]) print(dict2[1]) print(dict3[1]) print(dict4[1])  # 输出如下 0 set()  []

defaultdict类接受类型名称作为初始化函数的参数,这样使得默认值的取值更加灵活。

s = 'mynameisrunsen' d = collections.defaultdict(int) for k in s:     d[k] += 1 print(d)  # 输出如下 defaultdict(<class 'int'>, {'m': 2, 'y': 1, 'n': 3, 'a': 1, 'e': 2, 'i': 1, 's': 2, 'r': 1, 'u': 1})

练习有如下值集合 [11,22,33,44,55,66,77,88,99,99]。

下面将所有大于 55的值保存至字典的第一个key中,将小于 55 的值保存至第二个key的值中。

下面通过defaultdict默认字典对列表进行划分。

all_list = [11,22,33,44,55,66,77,88,99] dic = collections.defaultdict(list) for i in all_list:     if i > 55:         dic['k1'].append(i)     else:         dic['k2'].append(i) print(dic) # 输出如下 defaultdict(<class 'list'>, {'k2': [11, 22, 33, 44, 55], 'k1': [66, 77, 88, 99]})

也可以使用字典,具体代码如下。

all_list = [11,22,33,44,55,66,77,88,99] dic = {} for i in all_list:     if i > 55:         if "k1" in dic.keys():             dic['k1'].append(i)         else:             dic['k1'] = [i,]     else:         if "k2" in dic.keys():             dic['k2'].append(i)         else:             dic['k2'] = [i,] print(dic) # 输出如下 {'k2': [11, 22, 33, 44, 55], 'k1': [66, 77, 88, 99]}

namedtuple

namedtuple是用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。

使用命名元组的步骤:

# 将元组封装为一个类,可以通过字段名(属性名)来访问元组中的值 # 支持元组的所有操作 from collections import namedtuple # 1、定义一个类 Runsen = namedtuple('Runsen', ['name','sex','age']) # 2、创建对象 runsen = Runsen("Runsen", "帅男", 21) # 3、获取命名元组的值 print(runsen[1])    # 支持元组的索引取值   print(runsen[-2:])  # 支持切片 print(runsen.name)  # 支持通过字段名来取值  # _fields,获取命名元组的所有属性名 print(runsen._fields) # _asdict方法,将元组转化为字典 print(runsen._asdict())  # 输出如下  帅男 ('帅男', 21) Runsen ('name', 'sex', 'age') OrderedDict([('name', 'Runsen'), ('sex', '帅男'), ('age', 21)])

看完上述内容,你们对Python中 Collections 模块如何使用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网Python频道,感谢大家的支持。

--结束END--

本文标题: Python中 Collections 模块如何使用

本文链接: https://lsjlt.com/news/281897.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python中 Collections 模块如何使用
    今天就跟大家聊聊有关Python中 Collections 模块如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。collections模块是一个不用不知道,一用就上瘾的模块。这...
    99+
    2023-06-15
  • collections模块如何在Python中使用
    这期内容当中小编将会给大家带来有关collections模块如何在Python中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据...
    99+
    2023-06-14
  • Python内置模块Collections如何使用
    本篇内容主要讲解“Python内置模块Collections如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python内置模块Collections如何使用”吧!1、模块说明collec...
    99+
    2023-06-29
  • 如何在Python项目中使用collections模块
    这篇文章主要介绍了如何在Python项目中使用collections模块,编程网小编觉得不错,现在分享给大家,也给大家做个参考,一起跟随编程网小编来看看吧!Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;...
    99+
    2023-06-06
  • Python collections模块的使用技巧
    一般来讲,python的collections是用于存储数据集合(比如列表list, 字典dict, 元组tuple和集合set)的容器。这些容器内置在Python中,可以直接使用。该collections模块提供了...
    99+
    2022-06-02
    Python collections模块 Python collections的使用
  • python模块之collections
    计数器 Counter 计数元素迭代器 elements() 计数对象拷贝 copy() 计数对象清空 clear() from collections import Counter #import collection...
    99+
    2023-01-30
    模块 python collections
  • python中的deque模块(collections的deque模块)
    目录 1. deque是python的collections中的一个类 2.deque的简单使用以及它的方法 2.1 创建deque的方法  2.2 创建deque时,并指定大小maxlen,即能装几个元素, 以及d...
    99+
    2023-09-25
    python 开发语言 collections deque 队列
  • 25 Python的collections模块
    概述         在上一节,我们介绍了Python的sqlite3模块,包括:sqlite3模块中一些常用的函数和类。在这一节,我们将介绍Python的collections模块。collections模块是Python中的内置模块,它...
    99+
    2023-10-19
    python collections模块
  • Python的collections模块中namedtuple结构使用示例
    namedtuple 就是命名的 tuple,比较像 C 语言中 struct。一般情况下的 tuple 是 (item1, item2, item3,...),所有的 item 都只能按照 index 访...
    99+
    2022-06-04
    示例 模块 结构
  • Python中Collections模块的Counter容器类使用教程
    1.collections模块 collections模块自Python 2.4版本开始被引入,包含了dict、set、list、tuple以外的一些特殊的容器类型,分别是: OrderedDict类:排序...
    99+
    2022-06-04
    容器 模块 教程
  • Python内置模块Collections的使用教程详解
    目录1、模块说明2、 实战代码(1) testNamedTuple函数(2) testDeque函数(3)testDefaultdict函数(4) testOrderedDict函数...
    99+
    2024-04-02
  • Python的一个内置模块Collections怎么使用
    这篇文章主要讲解了“Python的一个内置模块Collections怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python的一个内置模块Collections怎么使用”吧!1、模...
    99+
    2023-07-06
  • Python的collections模块中的OrderedDict有序字典
    如同这个数据结构的名称所说的那样,它记录了每个键值对添加的顺序。 d = OrderedDict() d['a'] = 1 d['b'] = 10 d['c'] = 8 for letter in d:...
    99+
    2022-06-04
    字典 模块 Python
  • 简介Python的collections模块中defaultdict类型的用法
    defaultdict 主要用来需要对 value 做初始化的情形。对于字典来说,key 必须是 hashable,immutable,unique 的数据,而 value 可以是任意的数据类型。如果 va...
    99+
    2022-06-04
    模块 类型 简介
  • Python中如何使用mongodb模块
    这篇文章给大家介绍Python中如何使用mongodb模块,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。涉及到python和mongodb,那么安装相应的模块四必不可少的,最简单的安装...
    99+
    2024-04-02
  • python中如何使用os模块
    小编给大家分享一下python中如何使用os模块,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python是什么意思Python是一种跨平台的、具有解释性、编译性...
    99+
    2023-06-14
  • python中os模块如何使用
    这篇文章主要介绍了python中os模块如何使用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python有哪些常用库python常用的库:1.requesuts;2.scr...
    99+
    2023-06-14
  • Python中如何使用py2exe模块
    这期内容当中小编将会给大家带来有关Python中如何使用py2exe模块,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。我们先准备一个简单的pythonPythonhello.py# hello....
    99+
    2023-06-17
  • python中如何使用 String模块
    本篇文章为大家展示了python中如何使用 String模块,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。string成员常量:ascii_letters = 'abcd...
    99+
    2023-06-17
  • python中如何使用email模块
    python中如何使用email模块,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。说明email模块支持发送的邮件内容包括纯文本、HTML内容、图片和附件。email模块有几种...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作