python常用内建模块:collections

news/2024/12/23 23:45:01 标签: python

collections 是 Python 标准库中的一个模块,它提供了许多有用的容器数据类型,这些类型是对内置类型的扩展或补充。以下是 collections 模块中一些常用的类和它们的基本用法:

导入模块

首先,你需要导入 collections 模块:

 

python复制代码

import collections

常用类和用途

  1. namedtuple

    namedtuple 是一个工厂函数,用于创建可以通过属性名访问元素内容的元组子类。它使得代码更加清晰和可读。

     

    python复制代码

    Point = collections.namedtuple('Point', ['x', 'y'])
    p = Point(1, 2)
    print(p.x, p.y) # 输出: 1 2
  2. deque

    deque 是一个双端队列,支持从两端快速添加和删除元素。它对于实现队列和栈非常有用。

     

    python复制代码

    d = collections.deque()
    d.append(1)
    d.appendleft(2)
    print(d) # 输出: deque([2, 1])
    print(d.pop()) # 输出: 1
    print(d.popleft()) # 输出: 2
  3. Counter

    Counter 是一个字典子类,用于计数可哈希对象。它是一个集合,其中元素存储为字典的键,而它们的计数存储为字典的值。

     

    python复制代码

    c = collections.Counter(['a', 'b', 'c', 'a', 'b', 'b'])
    print(c) # 输出: Counter({'b': 3, 'a': 2, 'c': 1})
    print(c['a']) # 输出: 2
    c['d'] += 1
    print(c) # 输出: Counter({'b': 3, 'a': 2, 'c': 1, 'd': 1})
  4. defaultdict

    defaultdict 是一个字典子类,它调用一个工厂函数来提供缺失的键的值。这避免了在访问不存在的键时抛出 KeyError

     

    python复制代码

    dd = collections.defaultdict(int)
    dd['a'] += 1
    print(dd['a']) # 输出: 1
    print(dd['b']) # 输出: 0,因为默认值是 int 类型的 0
  5. OrderedDict

    OrderedDict 是一个字典子类,它记住了元素被添加的顺序。这对于需要保持元素插入顺序的场景非常有用。

     

    python复制代码

    od = collections.OrderedDict()
    od['a'] = 1
    od['b'] = 2
    od['c'] = 3
    for key, value in od.items():
    print(key, value)
    # 输出将按照插入顺序: a 1, b 2, c 3
  6. ChainMap

    ChainMap 将多个字典或映射对象组合成一个视图,以便可以像单个字典一样进行查找操作。它首先查找第一个映射,如果找不到,则查找下一个,依此类推。

     

    python复制代码

    c = collections.ChainMap({'a': 1}, {'b': 2}, {'a': 3})
    print(c['a']) # 输出: 1,因为第一个映射中有 'a'
    print(c['b']) # 输出: 2,因为第二个映射中有 'b'
    print(list(c.keys())) # 输出: ['a', 'b'],按第一个映射中的顺序
  7. UserDict, UserList, UserString

    这些类分别是对内置 dictlist, 和 str 类型的封装,提供了更多的灵活性来扩展或修改它们的行为。它们通常用于需要继承内置类型并添加额外功能的情况。

     

    python复制代码

    class MyDict(collections.UserDict):
    def __missing__(self, key):
    return 'default_value' # 当访问不存在的键时返回默认值
    mydict = MyDict()
    print(mydict['a']) # 输出: default_value

通过使用 collections 模块中的这些类和函数,你可以更有效地处理数据,并编写更清晰、更具可读性的代码。


http://www.niftyadmin.cn/n/5797121.html

相关文章

前端知识补充—CSS

CSS介绍 什么是CSS CSS(Cascading Style Sheet),层叠样式表, ⽤于控制⻚⾯的样式 CSS 能够对⽹⻚中元素位置的排版进⾏像素级精确控制, 实现美化⻚⾯的效果. 能够做到⻚⾯的样式和结构分离 基本语法规范 选择器 {⼀条/N条声明} 1)选择器决定针对谁修改…

271-基于XC7V690T的12路光纤PCIe接口卡

一、板卡概述 基于XC7V690T的12路光纤PCI-E接口卡,用于实现多通道高速光纤数据接收和发送,板卡兼容PCIe 2.0和PCIe 3.0规范,利用PCI-E Switch PEX 8748实现FPGA芯片与计算机的通信,计算机与板卡接口处提供PCI-e 16速接口&#xff…

【前端】Jquery拍照,通过PHP将base64编码数据转换成PNG格式,并保存图像到本地

目录 一、需求 二、开发语言 三、效果 四、业务逻辑: 五、web端调用摄像头 六、示例代码 1、前端 2、后端 一、需求 web端使用jquery调用摄像头拍照,并使用PHP把base64编码转换成png格式图片,下载到本地。 由于js不能指定图片存储的…

Docker快速安装Tomcat

安装docker的教程,参考文章: Linux安装Docker-CSDN博客 在linux中安装Tomcat,步骤如下: 1.从远程仓库中拉取Tomcat镜像 docker pull tomcat 如果拉取很慢,通过更换下载镜像的地址便可解决,不过镜像地址可能…

50.第二阶段x86游戏实战2-lua获取本地寻路,跨地图寻路和获取当前地图id

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…

[机器学习]XGBoost(1)——前置知识

XGBoost简介 XGBoost(eXtreme Gradient Boosting)是一种一种高效的梯度提升决策树算法,它通过集成多个弱学习器(决策树)来构建一个强学习器。 核心思想: XGBoost的核心思想是Boosting,即通过…

HarmonyOS NEXT 技术实践-实现音乐服务卡片

本项目展示了如何在 HarmonyOS Next 中实现音乐服务卡片,集成歌曲播放、歌词展示、歌单推荐等功能。通过使用服务卡片,用户无需进入完整的音乐应用即可通过简洁的界面进行播放控制和内容浏览,从而提高了操作的便捷性与效率。本文将详细介绍项…

403 Forbidden HTTP 响应状态码

403 Forbidden 是一种 HTTP 响应状态码,表示服务器理解了请求,但拒绝授权访问。以下是导致 403 Forbidden 错误的常见原因及解决方法: 1. 权限问题 原因 用户或客户端未被授权访问目标资源。 文件或目录的权限配置不正确。 解决方法 文…