Python 复合类型总结:序列、映射与集合_python 存放key value的数据用什么类型
在 Python 中,复合类型是处理复杂数据的核心工具,它们能容纳多个元素并提供丰富的操作方法。根据数据组织方式和特性,复合类型可分为序列类型、映射类型和集合类型。本文将系统总结这三类类型的关键特性、常用操作及适用场景,帮助你快速掌握其核心要点。
目录
一、序列类型:有序的元素集合
1. 共同特性
2. 典型类型及差异
二、映射类型:键值对的灵活映射
1. 核心特性
2. 常用操作
3.映射常用API
4. 适用场景
三、集合类型:无序去重的元素集合
1. 核心特性
2. 常用操作
3. 常用API
4. 适用场景
四、三类类型的对比与总结
一、序列类型:有序的元素集合
序列类型的核心特征是元素有序排列,可通过索引(位置编号)访问元素,且允许包含重复值。Python 中最常用的序列类型包括列表(list)、元组(tuple)和字符串(str)。
1. 共同特性
- 有序性:元素按插入顺序存储,可通过索引(0开始)或负索引(-1表示最后一个元素)访问。
s = \"hello\"print(s[1]) # 输出 \'e\'(正索引)print(s[-1]) # 输出 \'o\'(负索引)
- 可切片:通过[start:end:step]语法获取子序列,不修改原对象。
lst = [1, 2, 3, 4, 5]print(lst[1:4]) # 输出 [2, 3, 4](从索引1到3)print(lst[::2]) # 输出 [1, 3, 5](步长为2)
- 长度与包含判断:用len()获取元素个数,用in判断元素是否存在。
tup = (10, 20, 30)print(len(tup)) # 输出 3print(20 in tup) # 输出 True
2. 典型类型及差异
类型
特点
可变 / 不可变
适用场景
列表(list)
用[]定义,元素类型可混合
可变(支持增删改)
动态数据集合,如日志记录、批量处理
元组(tuple)
用()定义,元素一旦创建不可修改
不可变
存储固定数据,如坐标(x,y)、配置项
字符串(str)
用\'\'或\"\"定义,由字符组成
不可变
文本处理,如字符串拼接、格式化
示例:
# 列表:动态修改fruits = [\"apple\", \"banana\"]fruits.append(\"orange\") # 可变,添加元素print(fruits) # 输出 [\'apple\', \'banana\', \'orange\']# 元组:不可修改point = (3, 4)point[0] = 5 # 报错:元组不可变# 字符串:不可修改但支持拼接(生成新对象)greeting = \"hello\"new_greeting = greeting + \" world\" # 生成新字符串
二、映射类型:键值对的灵活映射
映射类型以键值对(key-value) 形式存储数据,通过唯一的键快速访问值,核心代表是字典(dict)。
1. 核心特性
- 键的唯一性:键必须是不可变类型(如字符串、元组、数字),且不能重复。
- 无序到有序:Python 3.7 + 中字典保持插入顺序,之前版本无序。
- 动态性:支持增删改键值对,无需预先定义长度。
2. 常用操作
- 创建与访问:
# 创建字典person = {\"name\": \"Alice\", \"age\": 30}# 访问值(通过键)print(person[\"name\"]) # 输出 \'Alice\'print(person.get(\"gender\", \"unknown\")) # 输出 \'unknown\'(键不存在时返回默认值)
- 修改与删除:
person[\"age\"] = 31 # 修改值person[\"gender\"] = \"female\" # 添加新键值对del person[\"age\"] # 删除键值对
- 遍历:
# 遍历键for key in person.keys():print(key)# 遍历键值对for key, value in person.items():print(f\"{key}: {value}\")
3.映射常用API
4. 适用场景
字典适合存储具有关联关系的数据,如用户信息(姓名、年龄、邮箱)、配置参数(键为参数名,值为参数值)等。其查找效率极高,时间复杂度接近 O (1)。
三、集合类型:无序去重的元素集合
集合(set)是无序的、不重复的元素集合,分为可变集合(set) 和不可变集合(frozenset)。
1. 核心特性
- 去重性:自动忽略重复元素,常用于数据去重。
- 无序性:无索引,不能通过位置访问元素。
- 元素类型:元素必须是不可变类型(如数字、字符串、元组)。
2. 常用操作
- 创建与去重:
# 创建集合(自动去重)numbers = {1, 2, 2, 3}print(numbers) # 输出 {1, 2, 3}# 从列表创建集合unique_fruits = set([\"apple\", \"banana\", \"apple\"])print(unique_fruits) # 输出 {\'apple\', \'banana\'}
- 集合运算(交集、并集、差集):
a = {1, 2, 3}b = {3, 4, 5}print(a & b) # 交集:{3}print(a | b) # 并集:{1, 2, 3, 4, 5}print(a - b) # 差集:{1, 2}
- 不可变集合(frozenset):
fs = frozenset([1, 2, 3])fs.add(4) # 报错:不可变集合不能修改
3. 常用API
- 不可变集合(frozenset):
fs = frozenset([1, 2, 3])fs.add(4) # 报错:不可变集合不能修改
4. 适用场景
- 数据去重:快速去除列表中的重复元素。
- 关系判断:如判断两个集合的交集、差集(如用户标签重叠分析)。
- 成员检测:高效判断元素是否存在(比列表快,尤其数据量大时)。
四、三类类型的对比与总结
类型
核心特点
代表类型
适用场景
序列类型
有序,可通过索引访问
list、tuple、str
存储有序数据,如列表、文本、坐标
映射类型
键值对,通过键访问
dict
存储关联数据,如用户信息、配置项
集合类型
无序,去重,支持集合运算
set、frozenset
去重、关系判断、成员检测
掌握这三类复合类型的特性,能在处理不同数据场景时选择最合适的工具:用序列处理有序数据,用映射管理关联数据,用集合实现去重与关系运算。合理搭配使用,可显著提升 Python 代码的效率与可读性。