> 技术文档 > Python 复合类型总结:序列、映射与集合​_python 存放key value的数据用什么类型

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)) # 输出 3​print(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

序号 函数及描述 1 dict.clear()删除字典内所有元素 2 dict.copy()返回一个字典的浅复制 4 dict.get(key, default=None)返回指定键的值,如果键不在字典中返回 default 设置的默认值 5 key in dict如果键在字典dict里返回true,否则返回false 6 dict.items()以列表返回一个视图对象 7 dict.keys()返回一个视图对象 9 dict.update(dict2)把字典dict2的键/值对更新到dict里 10 dict.values()返回一个视图对象 11 pop(key,default)删除字典 key(键)所对应的值,返回被删除的值。

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

方法 描述 add() 为集合添加元素 clear() 移除集合中的所有元素 copy() 拷贝一个集合 difference() 返回多个集合的差集 difference_update() 移除集合中的元素,该元素在指定的集合也存在。 discard() 删除集合中指定的元素 intersection() 返回集合的交集 intersection_update() 返回集合的交集,并更新到集合。 isdisjoint() 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 issubset() 判断指定集合是否为该方法参数集合的子集。 issuperset() 判断该方法的参数集合是否为指定集合的子集 pop() 随机移除元素 remove() 移除指定元素 symmetric_difference() 返回两个集合中不重复的元素集合。 symmetric_difference_update() 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 union() 返回两个集合的并集 update() 给集合添加元素 len() 计算集合元素个数
  • 不可变集合(frozenset):​
fs = frozenset([1, 2, 3])​fs.add(4) # 报错:不可变集合不能修改

4. 适用场景​

  • 数据去重:快速去除列表中的重复元素。​
  • 关系判断:如判断两个集合的交集、差集(如用户标签重叠分析)。​
  • 成员检测:高效判断元素是否存在(比列表快,尤其数据量大时)。

四、三类类型的对比与总结​

类型​

核心特点​

代表类型​

适用场景​

序列类型​

有序,可通过索引访问​

list、tuple、str​

存储有序数据,如列表、文本、坐标​

映射类型​

键值对,通过键访问​

dict​

存储关联数据,如用户信息、配置项​

集合类型​

无序,去重,支持集合运算​

set、frozenset​

去重、关系判断、成员检测​

掌握这三类复合类型的特性,能在处理不同数据场景时选择最合适的工具:用序列处理有序数据,用映射管理关联数据,用集合实现去重与关系运算。合理搭配使用,可显著提升 Python 代码的效率与可读性。​