iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >必须知道的collections模块
  • 733
分享到

必须知道的collections模块

模块collections 2023-01-31 08:01:59 733人浏览 泡泡鱼

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

摘要

先来看一下collections模块中的方法: __all__ = ['deque', 'defaultdict', 'namedtuple', 'UserDict', 'UserList', 'UserStrin

先来看一下collections模块中的方法:

__all__ = ['deque', 'defaultdict', 'namedtuple', 'UserDict', 'UserList',
            'UserString', 'Counter', 'OrderedDict', 'ChainMap']

本章我们只介绍除UserDict/UserList/UserString以外的方法,至于这三个方法,我们用于继承他们,而实现你想要的结构。
namedtuple:用于创建具有命名字段的tuple子类的工厂函数

#比如我们想构造一个纸牌类
Card=namedtuple('Card',[rank,suit])    #等同于namedtuple('Card',(rank,suit))
c1=Card('A','红桃')
c2=Card('K','黑桃')
print(c1.rank)    #A
print(c1.suit)    #红桃
print(c1.rank)    #B
print(c1.suit)    #黑桃
#改变对象的属性,可以使用 对象._replace(属性=值)方法更改已创建的对象的值
#_replace可以传入一个dict

deque:list-like容器,两端都有快速追加和弹出类,用于创建多个映射的单个视图(线程安全)

#其内部是一个单字母数组
a=deque("str")
a.appendleft("a")    #在头部插入数据
a.append("b")    #在尾部插入数据
a.count("a")    #查看字符出现的次数
a.insert(2,"y")    #根据索引插入值
a.clear()    #清空双端队列

defaultdict:多值字典

dict1=defaultdict(list/dict/set/lambda :"None")
dict1['a'].add(1)    #以set为例
print(dict1)    #defaultdict(<class 'set'>, {'a': {1}})
print(dict1['b'])    #None,这就是lambda的作用

OrderedDict:保持元素被插入的顺序,结构是一个双向链表

#python3下dict默认也是有序的,但是方法有限
od=OrderedDict([("name","jim"),("age",19),("sex","男")])
od.setdefault("high",178)    #添加一组数据,或者使用od["high"]=178
od.move_to_end('name')    #将name组放置末尾

for i in od.items():
    print(i)    
#('name', 'jim')
#('age', 19)
#('sex', '男')
#('high', 178)

Counter:计数器,在底层中为一个字典

c=Counter()    #可以直接Counter("测shishiyong"),这样就不用循环
for i in "测shishiyong":
    c[i]=c[i]+1
print(c)    
#Counter({'s': 2, 'h': 2, 'i': 2, '测': 1, 'y': 1, 'o': 1, 'n': 1, 'g': 1})
print(c.most_common(3))    #出现次数最多的三个元素
#[('s', 2), ('h', 2), ('i', 2)]
#c['元素']  查看元素的出现次数
#c.update(list/str) 可以增加元素
#Counter可以使用+/-进行运算

ChainMap:合并多个字典

dict1={'name':'jim','age':21}
dict2={'high':175,'gender':'男'}

new_dict=ChainMap(dict1,dict2)
print(new_dict)    #ChainMap({'name': 'jim', 'age': 21}, {'high': 175, 'gender': '男'})
#前dict中存在的键值对将会使后面dict中的键值对不会被重新合并,也可以使用update()方法对
#原字典更新新字典到里面,不过和直接合并的区别是,update会重新创建新字典,原字典更新删除
#数据不会影响新字典

--结束END--

本文标题: 必须知道的collections模块

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

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

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 必须知道的collections模块
    先来看一下collections模块中的方法: __all__ = ['deque', 'defaultdict', 'namedtuple', 'UserDict', 'UserList', 'UserStrin...
    99+
    2023-01-31
    模块 collections
  • Oracle!你必须要知道的Knowledge points
    子查询 什么是子查询 当查询中的限制条件需要另一个查询提供时,我们可以把两个查询语句嵌套起来,提供条件的查询语句作为子查询。子查询,也叫内部查询,先于主查询执行,子查询的结果被用于主查询。子查询分为单行子查...
    99+
    2022-10-18
  • Python你必须知道的十个库
    lxml是libxml2和libxslt的合体。如果你要处理XML或HTML,lxml是最好的选择。Docopt。抛弃optparse和argparse吧,使用docstrings来构建优雅的,可读性强的,并且复杂(如果你需要的话)的命令行...
    99+
    2023-01-31
    你必须 Python
  • PHP中必须知道的知识点有哪些
    这篇文章主要介绍“PHP中必须知道的知识点有哪些”,在日常操作中,相信很多人在PHP中必须知道的知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP中必须知道的知识点有哪些”的疑惑有所帮助!接下来...
    99+
    2023-06-20
  • ​PHP中必须知道的知识点是什么
    这篇文章给大家分享的是有关PHP中必须知道的知识点是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。文件操作函数:opendir(路径):打开一个路径资源(将路径内部的所有数据读入到内存)readdir(路径资...
    99+
    2023-06-20
  • Linux shell中必须知道的知识有哪些
    本篇文章为大家展示了Linux shell中必须知道的知识有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。我个人很喜欢使用 Linux 系统,虽然说 Windows 的图形化界面做的确实比 Li...
    99+
    2023-06-16
  • NoSQL的必须知道的东西有哪些
    这篇文章主要讲解了“NoSQL的必须知道的东西有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“NoSQL的必须知道的东西有哪些”吧!了解为什么NoSQL...
    99+
    2022-10-18
  • Python第一天:你必须要知道的Pyt
    [toc] 今天开始将会发布系列型的Python学习, 今天讲述的框架相对来说比较多,只能一一例举出来, 无法进行准确的 很多学Python的小伙伴, 转行, 或者兴趣还有就是单纯想了解的小伙伴,学Python的时候都只盲目的学习, ...
    99+
    2023-01-31
    要知道 你必须 Python
  • Linux中必须知道的命令有哪些
    小编给大家分享一下Linux中必须知道的命令有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!toptop命令是一个常用的查看系统资源使用情况和查看占用系统资源最多的进程的命令。top以列形式显示所有的进程,占最多CPU...
    99+
    2023-06-16
  • 新入门node.js必须要知道的概念(必看篇)
    一、对于一个刚入门node.js的朋友来说,一定要了解一些基础概念: 今年我正式进入社会后,发现自己所知道的IT方面的知识,真的只是牛毛,原来人外有人,山外有山,还需要继续努力。下面是一些我的自学习心得,发...
    99+
    2022-06-04
    要知道 必看 入门
  • 打包是必须的吗?Java 程序员必须要知道的打包技巧
    在 Java 程序开发中,打包是一个必须要掌握的技能。打包可以将多个 Java 文件打包成一个 jar 文件或者 war 文件,方便程序的分发和部署。那么,打包是必须的吗?我们来一起探讨一下。 首先,让我们看看不打包的情况下会发生什么。如...
    99+
    2023-09-29
    异步编程 打包 load
  • 数学建模 | 关于季节性ARIMA模型你必须知道的20个知识点
    SARIMA模型的含义是什么 SARIMA模型是ARIMA模型的扩展,可以对存在季节性周期变化的时间序列进行建模和预测。 SARIMA模型的表示方法是什么  SARIMA(p,d,q)(P,D,Q)s模型,s表示季节性周期。 SARI...
    99+
    2023-09-11
    机器学习 人工智能 算法 python 数据挖掘
  • 你必须知道Linux系统的七种优势
    正文 熟悉电脑的人都知道,linux 相比较于 Windows 有着众多的优势,所以现在越来越多的电脑用户开始使用 Linux 进行办公、学习。总体来讲,Linux 的优势主要有以下几个方面。 一、开源、免费 众所周知...
    99+
    2022-06-04
    Linux 优势
  • Vue开发必须知道的技巧有哪些
    这篇文章主要介绍“Vue开发必须知道的技巧有哪些”,在日常操作中,相信很多人在Vue开发必须知道的技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue开发必须知道的...
    99+
    2022-10-19
  • Android初学者必须知道的10个技术
    如果你是往Android开发路上走,那么以下的10个技术功能实现是你必须要会的,来看看。技术选型1. 下拉刷新 + 加载更多采用BGARefreshLayout-Android,支持的下拉刷新样式基本可以满足我的需求,使用起来也比较简单,实...
    99+
    2023-05-30
  • 你必须知道的python运维常用脚本!(
    github地址:https://github.com/opsonly, 上面是一个基于python3.7和django2.1的多人博客系统,喜欢的可以给个star~ 判断是否是一个目录 #!/usr/bin/env python3 #...
    99+
    2023-01-31
    你必须 脚本 常用
  • 25 Python的collections模块
    概述         在上一节,我们介绍了Python的sqlite3模块,包括:sqlite3模块中一些常用的函数和类。在这一节,我们将介绍Python的collections模块。collections模块是Python中的内置模块,它...
    99+
    2023-10-19
    python collections模块
  • Apache和NumPy:Java开发者必须知道的关键知识点。
    Apache和NumPy:Java开发者必须知道的关键知识点 Apache和NumPy是两个极其重要的工具,它们被广泛用于数据科学、机器学习、人工智能等领域。对于Java开发者而言,熟悉这两个工具的使用方法和关键知识点,可以为日常工作和项目...
    99+
    2023-11-14
    apache numy load
  • 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 队列
  • Java开发人员必须知道的NPM API技巧
    在Java开发中,NPM(Node Package Manager)是不可或缺的工具之一。它是一个包管理器,可以帮助我们下载、安装、更新和卸载各种JavaScript包。但是,除了这些基本的功能,NPM还有一些强大的API,可以帮助我们更...
    99+
    2023-09-26
    api npm 关键字
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作