如何使用Python中的collections模块提供的数据结构,如deque、Counter、OrderedDict等
Python 的 collections 模块提供了一些额外的数据结构,这些数据结构在内置的数据类型(如列表、字典、集合等)的基础上,增加了额外的功能或优化了性能。下面是如何使用 collections 模块中的 deque、Counter 和 OrderedDict 这三种数据结构的简单示例。
1. deque(双端队列)
deque(发音为“deck”)是一个线程安全、快速添加/删除元素于两端的线性容器。它支持从两端快速添加和删除元素,时间复杂度为 O(1)。
python复制代码
from collections import deque | |
# 创建一个 deque | |
d = deque('ghi') | |
# 添加元素到右端 | |
d.append('j') | |
d.append('k') | |
# 添加元素到左端 | |
d.appendleft('f') | |
d.appendleft('e') | |
# 打印 deque | |
print(d) # 输出: deque(['e', 'f', 'g', 'h', 'i', 'j', 'k']) | |
# 从右端移除元素 | |
print(d.pop()) # 输出: 'k' | |
# 从左端移除元素 | |
print(d.popleft()) # 输出: 'e' |
2. Counter(计数器)
Counter 是一个字典子类,用于计数可哈希对象。它是一个字典,其中元素被当作字典键,它们的计数被存储为字典值。
python复制代码
from collections import Counter | |
# 创建一个 Counter | |
c = Counter('gallahad') | |
# 输出 Counter | |
print(c) # 输出: Counter({'a': 3, 'l': 2, 'g': 1, 'h': 1, 'd': 1}) | |
# 更新计数器 | |
c.update('admiral') | |
# 输出更新后的 Counter | |
print(c) # 输出: Counter({'a': 4, 'd': 2, 'l': 2, 'g': 1, 'm': 1, 'i': 1, 'r': 1, 'h': 1}) | |
# 获取某个元素的计数 | |
print(c['a']) # 输出: 4 | |
# 获取元素计数并删除该元素(如果计数为 0,则不执行删除) | |
print(c.pop('d')) # 输出: 2 | |
# 输出更新后的 Counter | |
print(c) # 输出: Counter({'a': 4, 'l': 2, 'g': 1, 'm': 1, 'i': 1, 'r': 1, 'h': 1}) |
3. OrderedDict(有序字典)
OrderedDict 是一个字典子类,它保持了元素被插入时的顺序。当迭代 OrderedDict 时,元素的顺序与它们被插入时的顺序相同。
python复制代码
from collections import OrderedDict | |
# 创建一个 OrderedDict | |
d = OrderedDict() | |
d['foo'] = 1 | |
d['bar'] = 2 | |
d['spam'] = 3 | |
d['grok'] = 4 | |
# 迭代并打印 OrderedDict | |
for key in d: | |
print(key, d[key]) | |
# 输出: | |
# foo 1 | |
# bar 2 | |
# spam 3 | |
# grok 4 | |
# 插入一个新的键值对到有序字典的开始 | |
d.move_to_end('foo', last=False) | |
# 再次迭代并打印 | |
for key in d: | |
print(key, d[key]) | |
# 输出: | |
# foo 1 | |
# bar 2 | |
# spam 3 | |
# grok 4 |
这些数据结构在需要特定功能的场景下非常有用,如需要维护插入顺序的字典、需要快速从两端添加/删除元素的列表,或者需要计数可哈希对象的场景。
相关文章:
如何使用Python中的collections模块提供的数据结构,如deque、Counter、OrderedDict等
Python 的 collections 模块提供了一些额外的数据结构,这些数据结构在内置的数据类型(如列表、字典、集合等)的基础上,增加了额外的功能或优化了性能。下面是如何使用 collections 模块中的 deque、Counter 和 OrderedDict 这三种…...
2024年道路安全员考试题库
2024年道路安全员考试题库 16.根据《中华人民共和国道路运输条例》,关于从事客运经营使用的车辆的规定,下列说法错误的是( )。 A.客运经营者应当使用符合国家规定标准的车辆从事道路运输经营 B.客运经营者应当加强对车辆的维护和检测,确保车辆符合国家规定的技术标准 C.…...
自建 Docker 镜像
本文地址:blog.lucien.ink/archives/547 本文主要参考自:自建Docker 镜像/源加速的方法 1. 简介 最近 Docker Hub 被禁一事引起了不小的波动,在这里简单讲下在这之后应该如何访问公开的 Docker Hub。 2. Cloudflare 2.1 搭建 搭建的前提是…...
php实现抖音小程序支付
开发者发起下单_小程序_抖音开放平台 第一步、抖音小程序发起支付 tt.pay_小程序_抖音开放平台 前端提交订单数据到后端接口,然后使用 tt.pay发起支付 请求参数 属性 类型 必填 说明 order_id string 是 担保交易服务端订单号 order_token string 是 …...
代码审计(1):CVE-2022-4957分析及复现
0x00漏洞描述: ѕрееdtеѕt iѕ а vеrу liɡhtԝеiɡht nеtԝоrk ѕрееd tеѕtinɡ tооl imрlеmеntеd in Jаvаѕсriрt. Thеrе iѕ а Crоѕѕ-ѕitе Sсriрtinɡ vulnеrаbilitу in librеѕроndеd ѕрееdtеѕt…...
问题:设备管理指标为完好率不低于( ),待修率不高于5%,事故率不高于1%。 #知识分享#经验分享#经验分享
问题:设备管理指标为完好率不低于( ),待修率不高于5%,事故率不高于1%。 A、100% B、95% C、90% D、80% 参考答案如图所示...
【Linux】(六)—— vim编辑器
vim文件编辑器 Vim(Vi Improved)是一个高度可配置的文本编辑器,最初基于UNIX下的Vi编辑器发展而来,广泛用于程序开发和系统管理中。vim编辑器可以只通过终端命令即可编写修改文件,不需要和gedit一样需要打开类似于记事…...
06016传感器原理与应用202207
06016传感器原理与应用202207 选择题(2*11) 1.基本的电子测量系统由四部分组成,即电源、信号调节、显示系统和B(P7) A.分档器 B.传感器 C.处理器 D.采集器 2.热电阻温度计的测量电路采用精度较高的是B&am…...
java web:springboot mysql开发的一套家政预约上门服务系统源码:家政上门服务系统的运行流程
java web:springboot mysql开发的一套家政预约上门服务系统源码:家政上门服务系统的运行流程 家政上门服务系统的优势 服务质量更稳定:由专业的家政人员提供服务,经过严格的培训和筛选。 价格更透明:采用套餐式收费&…...
二叉树的后序遍历-力扣
二叉树的后序遍历,指首先遍历二叉树的左节点,然后遍历二叉树的右节点,最后遍历中间节点。按照顺序进行递归遍历即可。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *rig…...
C++基础编程100题-008 OpenJudge-1.3-06 甲流疫情死亡率
更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0103/06/ 描述 甲流并不可怕,在中国,它的死亡率并不是很高。请根据截止2009年12月22日各省报告的甲流确诊数和死亡数,计算甲流在各省的死亡率。 输入 输入仅一行ÿ…...
计算机网络 ——网络层(IPv4地址)
计算机网络 ——网络层(IPv4地址) 什么是IPv4地址IP地址的分类特殊的IP地址 查看自己的IPv4地址 我们今天来看IPv4地址: 什么是IPv4地址 IPv4(Internet Protocol version 4)是第四版互联网协议,是第一个被…...
重写mybatisPlus自定义ID生成策略
1.项目中需要引入mybatisplus核心组件 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mp.version}</version></dependency> 2.新建一个类实现IdentifierGenera…...
华为坤灵路由器配置SSH
配置SSH服务器的管理网口IP地址。 <HUAWEI> system-view [HUAWEI] sysname SSH Server [SSH Server] interface meth 0/0/0 [SSH Server-MEth0/0/0] ip address 10.248.103.194 255.255.255.0 [SSH Server-MEth0/0/0] quit 在SSH服务器端生成本地密钥对。 [SSH Server…...
盘点一个Python网络爬虫的实战问题
点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 西宫南内多秋草,落叶满阶红不扫。 大家好,我是Python进阶者。 一、前言 前几天在Python最强王者交流群【🇿 &#x…...
100道面试必会算法-32-二叉树右视图用栈实现队列
100道面试必会算法-32-二叉树右视图&用栈实现队列 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4]示例 2: 输入: [1,n…...
⽀付逻辑漏洞思路⼩集合
⼀.直接的价格修改 ⼆.修改⽀付状态 三.修改购买数量 四:⽀付附属值修改 ➀:修改优惠劵⾦额 ➁:修改优惠劵⾦额及业务逻辑问题 ➂:修改积分⾦额 ➃:满减修改 五:订单替代⽀付 六:⽀付接…...
嵌入式学习——Linux高级编程复习(线程)——day40
1. 线程 1.1 定义 线程是一个轻量级的进程 是一个任务被创建、调度、消亡的过程 1.2 线程和进程的区别与联系 1. 线程是CPU任务调度的最小单元 2. 进程是操作系统资源分配的最小单元 3. 线程(Thread)是操作系统能够进行运算调度的最小单位…...
kvm管理工具-virsh
virsh 查看全部虚拟机列表停止虚拟机列表启动虚拟机强制关闭虚拟机连接虚拟机控制台查看虚拟机的详细信息查看虚拟机接口信息查看虚拟机xml文件配置删除虚拟机 KVM(Kernel-based Virtual Machine)是一种基于 Linux 内核的虚拟化技术,允许在一…...
VisionPro的应用和入门教程
第1章 关于VisionPro 1.1 康耐视的核心技术 1. 先进的视觉系统 康耐视的视觉系统结合了高性能的图像传感器、复杂的算法和强大的计算能力,能够实时捕捉、分析和处理高分辨率图像。其视觉系统包括固定式和手持式两种,适用于各种工业环境。无论是精密电…...
Loop Habit Tracker习惯追踪应用技术深度解析与架构实践指南
Loop Habit Tracker习惯追踪应用技术深度解析与架构实践指南 【免费下载链接】uhabits Loop Habit Tracker, a mobile app for creating and maintaining long-term positive habits 项目地址: https://gitcode.com/gh_mirrors/uh/uhabits Loop Habit Tracker是一款基于…...
居家办公网络优化指南:从Wi-Fi原理到实战部署
1. 居家隔离如何压垮了我们的家庭Wi-Fi网络如果你在2020年初也经历过居家办公或学习,大概率会对某个场景记忆犹新:视频会议卡成PPT、在线课程频繁掉线、追剧时那个转不完的缓冲圈。这不是你一个人的问题,而是全球无数家庭网络在特定时期承受的…...
科技与科学领域每日新闻摘要-2026-05-12
科技与科学领域每日新闻摘要 日期: 2026年5月12日 1. Nature发布2026年最值得关注的七大技术 核心要点: 《自然》杂志发表2026年最值得关注的七项关键技术,包括异种器官移植、AI天气预报、可控核聚变、光学显微脑图谱、mRNA疗法、高精度天文成像和量子计算。这些技…...
怎样高效使用Mac微信插件:5大实用功能完全指南
怎样高效使用Mac微信插件:5大实用功能完全指南 【免费下载链接】WeChatExtension-ForMac A plugin for Mac WeChat 项目地址: https://gitcode.com/gh_mirrors/we/WeChatExtension-ForMac 想让你的Mac微信变得更加强大吗?WeChatExtension-ForMac正…...
RCB-F9T-0,支持多频段多星座及纳秒级精度的多协议GNSS授时板
简介今天我要向大家介绍的是 u-blox 的多频段GNSS授时板——RCB-F9T-0。这是一款专为高精度授时应用设计的紧凑型定时板。该模块基于 u-blox ZED-F9T-00B 高精度授时模块,搭载AEC-Q100认证的GNSS芯片;集成SMB天线连接器和5V有源天线供电电路;…...
外汇延迟套利检测系统演进:从规则到AI的行为博弈
1. 项目概述:当速度优势不再是护城河 在电子外汇交易的世界里,速度套利一直是一个古老而又充满技术魅力的游戏。它的核心逻辑简单到近乎纯粹:如果你能比你的交易对手更快地获取到市场价格变动的信息,你就能在对手更新其报价之前&a…...
MTK平台Android 11定制:Settings里那些被“砍掉”的功能,到底怎么改的?
MTK平台Android 11深度定制:Settings功能裁剪的工程实践与源码解析 在移动设备系统定制领域,MTK平台因其高度集成的硬件方案和灵活的软件架构,成为众多厂商的首选。当我们基于MTK平台进行Android 11系统级定制时,Settings应用的模…...
保姆级教程:用MPTool给瑞昱RTL8762CMF蓝牙芯片烧录固件(附串口接线图)
零基础实战:RTL8762CMF蓝牙芯片固件烧录全流程指南 拿到一块搭载RTL8762CMF的开发板时,最关键的步骤莫过于正确烧录固件。作为一款支持蓝牙5.0的低功耗芯片,RTL8762CMF在物联网设备中应用广泛。但很多开发者在首次接触时,往往会在…...
ComfyUI-VideoHelperSuite VHS_VideoCombine节点缺失问题深度分析与解决方案
ComfyUI-VideoHelperSuite VHS_VideoCombine节点缺失问题深度分析与解决方案 【免费下载链接】ComfyUI-VideoHelperSuite Nodes related to video workflows 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-VideoHelperSuite 技术问题深度分析 问题现象与影响范…...
