Python模块:内置模块collections数据结构扩展
Python模块内置模块collections数据结构扩展一、开篇标准容器的升级版Python内置的list、dict、tuple、set已经很强大但有时你需要更专业的工具。collections模块提供了这些高级容器——namedtuple让元组有名字deque让两端操作飞起来Counter让统计一行搞定defaultdict让字典不再抛KeyError。⌨️ 导入fromcollectionsimport(namedtuple,deque,Counter,defaultdict,OrderedDict,ChainMap)二、namedtuple有名字的元组fromcollectionsimportnamedtuple# 创建具名元组类型类名 字段名空格分隔或列表Pointnamedtuple(Point,[x,y])Studentnamedtuple(Student,name age score)# 创建实例pPoint(3,4)sStudent(张三,20,92)# 像元组一样索引像对象一样用属性名print(p[0],p[1])# 3 4 —— 元组用法print(p.x,p.y)# 3 4 —— 对象用法更可读print(f{s.name}:{s.age}岁,{s.score}分)# 实用方法print(s._asdict())# {name: 张三, age: 20, score: 92} 转字典print(s._replace(age21))# Student(name张三, age21, score92) 替换字段# 从字典创建data{name:李四,age:25,score:88}s2Student(**data)# namedtuple不可变节省内存是tuple的直接子类print(isinstance(s,tuple))# True# 应用表示数据库查询结果defquery_users():Usernamedtuple(User,id name email)return[User(1,张三,zstest.com),User(2,李四,lstest.com)]foruserinquery_users():print(fID:{user.id}{user.name}{user.email})三、deque双端队列fromcollectionsimportdeque# 创建双端队列dqdeque([1,2,3])print(dq)# deque([1, 2, 3])# append/appendleft —— 两端添加 O(1)dq.append(4)# 右端添加dq.appendleft(0)# 左端添加print(dq)# deque([0, 1, 2, 3, 4])# pop/popleft —— 两端弹出 O(1)print(dq.pop())# 4右端弹出print(dq.popleft())# 0左端弹出# maxlen —— 限制最大长度FIFO自动丢弃旧元素historydeque(maxlen3)# 只保留最近3条foriinrange(5):history.append(i)print(f添加{i}后:{list(history)})# 添加0后: [0]# 添加1后: [0, 1]# 添加2后: [0, 1, 2]# 添加3后: [1, 2, 3] ← 0被丢弃# 添加4后: [2, 3, 4] ← 1被丢弃# rotate(n) —— 旋转元素dqdeque([1,2,3,4,5])dq.rotate(2)# 右旋2位后面2个移到前面print(dq)# deque([4, 5, 1, 2, 3])dq.rotate(-1)# 左旋1位print(dq)# deque([5, 1, 2, 3, 4])# deque vs list# list的pop(0)/insert(0,v)是O(n)deque的popleft()/appendleft(v)是O(1)# 适合实现队列、栈、滑动窗口四、Counter频次计数器fromcollectionsimportCounter# 统计可迭代对象中各元素的出现次数wordsmississippicntCounter(words)print(cnt)# Counter({i: 4, s: 4, p: 2, m: 1})# 最常用的方法print(cnt.most_common(3))# [(i, 4), (s, 4), (p, 2)]print(cnt[i])# 4 —— 访问计数print(cnt[z])# 0 —— 不存在的键返回0不抛KeyError# 更新计数cnt.update(mississippi)# 累加print(cnt[i])# 8cnt.subtract(miss)# 累减print(cnt[i])# 7# Counter支持算术运算aCounter(abc)bCounter(bcd)print(ab)# Counter({b: 2, c: 2, a: 1, d: 1})print(a-b)# Counter({a: 1}) —— 差集计数相减只保留正的print(ab)# Counter({b: 1, c: 1}) —— 交集取最小值print(a|b)# Counter({a: 1, b: 1, c: 1, d: 1}) —— 并集取最大值# 实际应用词频统计textthe cat and the dog and the mouseword_countsCounter(text.split())print(word_counts.most_common(3))# [(the, 3), (and, 2), (cat, 1)]五、defaultdict带默认值的字典fromcollectionsimportdefaultdict# 普通字典访问不存在的键会抛出KeyErrord{}# d[key] 1 # KeyError!# defaultdict在访问不存在的键时自动用default_factory创建默认值dddefaultdict(int)# int()返回0print(dd[count])# 0 —— 自动创建dd[count]1print(dd[count])# 1# 常用的default_factorydd_listdefaultdict(list)# 默认空列表 → 方便分组dd_setdefaultdict(set)# 默认空集合 → 方便去重分组dd_dictdefaultdict(dict)# 默认空字典dd_strdefaultdict(str)# 默认空字符串dd_counterdefaultdict(lambda:0)# 自定义默认值# 经典应用分组students[(技术部,张三),(市场部,李四),(技术部,王五),(市场部,赵六),(人事部,钱七),]by_deptdefaultdict(list)fordept,nameinstudents:by_dept[dept].append(name)fordept,membersinby_dept.items():print(f{dept}:{, .join(members)})# 技术部: 张三, 王五# 市场部: 李四, 赵六# 人事部: 钱七# ⚠️ defaultdict的坑dddefaultdict(list)dd[key].append(1)# 正常# key in dd 是True因为访问过已被创建# 如果你只想读取而不想创建用普通dict的get()方法六、OrderedDict和ChainMapfromcollectionsimportOrderedDict,ChainMap# OrderedDict —— 保持插入顺序# Python 3.7普通dict也保持顺序但OrderedDict有额外方法odOrderedDict()od[a]1od[b]2od[c]3print(od)# OrderedDict([(a, 1), (b, 2), (c, 3)])od.move_to_end(a)# 移到末尾print(od)# OrderedDict([(b, 2), (c, 3), (a, 1)])# ChainMap —— 合并多个字典按顺序查找defaults{host:localhost,port:8080,debug:False}user_config{port:9090,debug:True}runtime_config{host:192.168.1.1}configChainMap(runtime_config,user_config,defaults)print(config[host])# 192.168.1.1 —— 从runtime_config找到print(config[port])# 9090 —— 从user_config找到print(config[debug])# True —— 从user_config找到# 查找顺序runtime_config → user_config → defaults七、总结collections模块为Python的标准容器提供了专业级升级。选择正确的容器能让代码更简洁、更高效。选型速查元组需要字段名 →namedtuple两端高效操作 →deque统计频次 →Counter避免KeyError →defaultdict合并多字典 →ChainMap

相关新闻

AXI协议BURST机制深度解析:从原理到实战的性能优化指南

AXI协议BURST机制深度解析:从原理到实战的性能优化指南

1. 项目概述:为什么BURST是AXI协议的灵魂在数字芯片设计,尤其是SoC(片上系统)互联领域,AXI(Advanced eXtensible Interface)协议是当之无愧的“顶流”。无论是连接处理器核心与高速缓存&#xf…

2026/8/1 12:24:23 阅读更多 →
如何快速批量重命名阿里云盘文件:终极免费工具指南

如何快速批量重命名阿里云盘文件:终极免费工具指南

如何快速批量重命名阿里云盘文件:终极免费工具指南 【免费下载链接】aliyundrive-batch-rename 阿里云盘网页端批量重命名的油猴脚本 项目地址: https://gitcode.com/gh_mirrors/al/aliyundrive-batch-rename 还在为阿里云盘里杂乱无章的文件名而烦恼吗&…

2026/8/1 12:24:23 阅读更多 →
基于LCU API的模块化自动化框架:League Akari架构解析与深度定制指南

基于LCU API的模块化自动化框架:League Akari架构解析与深度定制指南

基于LCU API的模块化自动化框架:League Akari架构解析与深度定制指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari…

2026/8/1 12:23:23 阅读更多 →

最新新闻

Ohook:终极免费Office激活方案,3分钟永久解锁Microsoft 365完整功能

Ohook:终极免费Office激活方案,3分钟永久解锁Microsoft 365完整功能

Ohook:终极免费Office激活方案,3分钟永久解锁Microsoft 365完整功能 【免费下载链接】ohook An universal Office "activation" hook with main focus of enabling full functionality of subscription editions 项目地址: https://gitcode.…

2026/8/1 13:00:35 阅读更多 →
如何免费解锁Wand专业版:WandEnhancer开源增强工具完整指南

如何免费解锁Wand专业版:WandEnhancer开源增强工具完整指南

如何免费解锁Wand专业版:WandEnhancer开源增强工具完整指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 还在为Wand(原W…

2026/8/1 13:00:35 阅读更多 →
基于强化学习的 NPC 走位与掩体选择:从奖励设计到训练崩溃

基于强化学习的 NPC 走位与掩体选择:从奖励设计到训练崩溃

基于强化学习的 NPC 走位与掩体选择:从奖励设计到训练崩溃 一、手写走位规则的尽头:覆盖不了的真实战场 NPC 走位常靠手写规则:血量低找掩体、被瞄就横移、近战贴脸。规则在简单场景够用,但真实战场瞬息万变——多个敌人交叉火力…

2026/8/1 13:00:35 阅读更多 →
AI文本检测与语义重构技术解析

AI文本检测与语义重构技术解析

1. 项目背景与核心挑战 去年帮表弟处理毕业论文时,第一次见识到Turnitin的AIGC检测有多严格。他用了某AI辅助工具生成的文献综述部分,系统直接标出88.3%的AI生成内容风险。这让我意识到,随着AI检测技术迭代,传统的"机翻人工润…

2026/8/1 13:00:35 阅读更多 →
5大架构创新:深度解析League Akari的模块化桌面应用技术实践

5大架构创新:深度解析League Akari的模块化桌面应用技术实践

5大架构创新:深度解析League Akari的模块化桌面应用技术实践 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一款基…

2026/8/1 13:00:35 阅读更多 →
IMX219-77IR相机模组:日夜两用原理、驱动集成与场景应用全解析

IMX219-77IR相机模组:日夜两用原理、驱动集成与场景应用全解析

1. 项目概述:IMX219-77IR相机模组深度解析 如果你正在寻找一款能在各种光线条件下,尤其是低光或完全无光环境下稳定工作的相机方案,那么IMX219-77IR这个型号很可能已经进入了你的视野。这不仅仅是一个普通的摄像头,它是一个集成了…

2026/8/1 12:59:35 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/8/1 10:33:33 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →