Python全栈入门到实战【基础篇 13】复合数据类型:字典(键值映射)与集合(无序去重)
前言哈喽各位小伙伴!前面咱们学了字符串、数字这些基础类型,也掌握了列表这种有序序列——但实际开发中,仅靠这些还不够:想存储“姓名-年龄-手机号”这种“键值对应”的用户信息,用列表只能按位置存([“张三”, 20, “13812345678”]),查手机号要记索引,极不方便;想快速给一堆重复数据去重(比如[1,2,2,3,3,3]),用列表要写循环判断,效率低;想对比两个列表的“共同元素”“差异元素”,用列表遍历要写大量代码。这些场景的最优解,就是Python的两大复合数据类型:字典(dict)和集合(set)——字典是“键值映射”的宝库,能通过“键”快速定位“值”,无需记忆位置;集合是“无序去重”的利器,能一键去重、高效做集合运算。这节咱们用“原理+实操+场景+避坑”的方式,吃透字典和集合的核心用法:字典:定义、增删改查、嵌套字典、常用方法(get()/keys()/items());集合:定义、增删改查、去重与集合运算(交集/并集/差集);字典vs集合vs列表:适用场景对比,避免用错类型。吃透这两个类型,你就能高效处理“键值关联数据”和“去重/集合对比”场景,代码简洁度和效率直接翻倍~文章目录前言一、前置引入:为什么需要字典和集合?二、字典(dict):键值映射的“万能容器”1. 字典的定义:键值对的集合语法示例:定义用户信息字典空字典定义2. 字典的核心操作:增删改查(高频)(1)查:获取键对应的值方法1:`dict[key]`(直接访问,键不存在抛异常)方法2:`dict.get(key, default=None)`(推荐,键不存在返回默认值)方法3:`dict.keys()`/`dict.values()`/`dict.items()`(批量获取)(2)增:添加新键值对方法1:`dict[key] = value`(键不存在则新增)方法2:`dict.update(other_dict)`(批量添加/更新)(3)改:修改已有键的值方法:`dict[key] = value`(键存在则修改)(4)删:删除键值对方法1:`del dict[key]`(键不存在抛异常)方法2:`dict.pop(key, default)`(推荐,键不存在返回默认值)方法3:`dict.clear()`(清空所有键值对)3. 字典的进阶用法:嵌套字典示例:嵌套字典(用户的详细信息)4. 字典的核心避坑要点坑1:键必须是不可变类型坑2:重复键会被覆盖坑3:字典是无序的?(Python 3.7+已有序)坑4:遍历字典时修改键会报错三、集合(set):无序去重的“高效工具”1. 集合的定义:无序不重复元素语法示例:定义集合用`set()`转换其他类型为集合2. 集合的核心操作:增删改查(1)查:判断元素是否存在(`in`/`not in`)(2)增:添加元素方法1:`set.add(element)`(添加单个元素)方法2:`set.update(iterable)`(批量添加元素)(3)删:删除元素方法1:`set.remove(element)`(元素不存在抛异常)方法2:`set.discard(element)`(推荐,元素不存在不报错)方法3:`set.pop()`(随机删除一个元素,返回该元素)方法4:`set.clear()`(清空集合)3. 集合的核心功能:集合运算(交集/并集/差集)核心集合运算表(以`a={1,2,3,4}`,`b={3,4,5,6}`为例)示例:集合运算实战4. 集合的核心避坑要点坑1:空集合不能用`{}`坑2:集合是无序的,不能用索引访问坑3:元素必须是不可变类型坑4:集合运算返回新集合,不修改原集合四、字典vs集合vs列表:怎么选?选型口诀五、实战案例:用户信息管理系统(整合字典与集合)六、总结七、专栏订阅一、前置引入:为什么需要字典和集合?前面学的列表(list)是“有序序列”,但有两个明显短板:查找元素依赖索引,无法通过“语义化标识”(比如“姓名”“手机号”)快速定位;允许重复元素,去重需要额外写代码;集合运算(比如找共同元素)效率低,时间复杂度是O(n²)。而字典和集合正好弥补了这些短板:字典:用“键(key)-值(value)”对应关系存储,查找元素时间复杂度O(1)(和索引查找一样快),比如通过user["phone"]直接获取手机号,无需记位置;集合:自动去重,支持交集()、并集(|)、差集(-)等运算,时间复杂度O(1),处理重复数据和集合对比时效率极高。简单说:存储“键值对应”数据(用户信息、配置参数、JSON数据)→ 用字典;去重、集合对比(共同好友、商品分类交集)→ 用集合;有序存储、按位置访问 → 用列表。二、字典(dict):键值映射的“万能容器”字典是Python中最常用的复合类型之一,核心是“键值对(key-value pair)”,每个键唯一对
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2417578.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!