一、字典(dict)—— 键值对存储
定义:使用 {} 存储,由 键 (key) : 值 (value) 组成,键必须唯一且不可变(字符串 / 数字 / 元组),值可以任意类型。
定义字典字面量:{key:value,key:value,......,key:value}
定义字典变量:my_dict = {key:value,key:value,......,key:value}
定义空字典:my_dict={}或my_dict=dict()
- 每一个元素是一个键值对,key和value可以是任意类型的数据(key不可以为字典,value任意:字典,整数,字符串等)
- 无法用下标,可以用key找到对应的value
常用方法:
- 新增元素:字典[key]=value
- 更新:字典[key]=value(字典key不可以重复,所有对已经存在的key执行上述操作,就是更新value值)
- 删除:字典.pop(key),(并将其对应的value作为返回值提供)
- 清空字典:字典.clear()
- 获取全部的key:字典.keys()
- 遍历字典:for key in 字典.keys()
字典特点
- 键必须唯一,重复键会覆盖
- 键不可变,不能用列表 / 字典当键
- Python 3.7+ 字典保留插入顺序
- 查找速度极快(哈希表)
二、集合(set)—— 无序不重复
定义:使用 {} 存储,只有元素,没有键值对,自动去重,无序。
定义集合字面量:{元素,元素,......,元素}
定义集合变量:变量名称 = {元素,元素,......,元素}
定义空集合:变量名称 = set()
常用操作
- 增加元素:集合.add(元素)
- 删除原宿:集合.remove(元素)
- 从集合中随机抽取一个元素:集合.pop()
- 清空集合:集合.clean()
- 集合1.difference(集合2):取出集合1和集合2的差集,集合1有集合2没有的
- 集合1.difference_update(集合2):对比集合1和集合2,在集合1内,删除和集合2相同的元素,结果:集合1被修改,集合2不变
- 集合1.union(集合2):将集合1和集合2组成新集合,结果:得到新集合,集合1和集合2不变。
遍历集合,只能用for,不能用while,因为集合不支持下标
集合特点
- 自动去重(最常用功能)
- 无序,不能用下标访问
- 元素必须不可变(不能存列表 / 字典)
- 成员判断
in速度远快于列表
三、字典 vs 集合 快速对比
| 特性 | 字典 (dict) | 集合 (set) |
|---|---|---|
| 符号 | {key:value} | {元素} |
| 存储形式 | 键值对 | 单个元素 |
| 去重 | 键自动去重 | 元素自动去重 |
| 顺序 | 3.7+ 有序 | 完全无序 |
| 查找速度 | 极快 | 极快 |
| 常用场景 | 存储结构化数据 | 去重、数学运算 |