Python核心数据结构详解:元组、集合与字典

摘要:

Python五大核心数据结构各具特色:列表(List)为可变有序容器,支持动态增删改查;字符串(String)为不可变序列,专注文本处理与编码存储;元组(Tuple)不可变且有序,用于保护固定数据(如配置项);集合(Set)无序且元素唯一,专精去重与集合运算;字典(Dictionary)以键值对实现O(1)高效查询,适合结构化数据管理。灵活运用列表的动态性、字符串的安全性、元组的稳定性、集合的排重能力及字典的映射逻辑,可显著提升代码效率与可维护性。

目录

一、字典(Dictionary)

[1. 定义与特性](#1. 定义与特性)

[2. 常用操作](#2. 常用操作)

定义字典

增删改查

遍历操作

字典的生成式

[3. 应用场景](#3. 应用场景)

二、集合(Set)

[1. 定义与特性](#1. 定义与特性)

[2. 基本操作](#2. 基本操作)

定义集合

去重应用

集合运算

[3. 应用场景](#3. 应用场景)

三、元组(Tuple)

[1. 定义与特性](#1. 定义与特性)

[2. 基本操作](#2. 基本操作)

定义元组

索引与切片

元组解包

[3. 应用场景](#3. 应用场景)

四、对比与总结

选择建议:

五、代码实战示例

示例1:统计单词频率(字典应用)

示例2:列表去重(集合应用)

示例3:多返回值函数(元组应用)


一、字典(Dictionary)

1. 定义与特性

  • 键值对容器:存储形式为 {key: value},键必须唯一且不可变(可哈希)。
  • 高效查询:通过键直接访问值,时间复杂度 O(1)。
  • 有序性:Python 3.7+ 中字典保持插入顺序。

2. 常用操作

定义字典

复制代码
# 定义字典
person = {"name": "Alice", "age": 25, "city": "Beijing"}

增删改查

复制代码
# 增删改查
person["gender"] = "Female"    # 新增键值对
del person["age"]              # 删除键值对
person["city"] = "Shanghai"    # 修改值
print(person.get("name"))      # 安全获取值 → "Alice"

遍历操作

复制代码
# 遍历操作
for key in person:             # 遍历键
    print(key, person[key])

for key, value in person.items():  # 同时遍历键值
    print(f"{key}: {value}")

字典的生成式

复制代码
keys = ["a", "b", "c"]
values = [1, 2, 3]
dic = {k: v for k, v in zip(keys, values)}  # → {'a':1, 'b':2, 'c':3}

3. 应用场景

  • 结构化数据存储:如JSON数据处理、数据库查询结果。

  • 快速查找表:如单词计数器、缓存机制。

  • 配置管理:存储程序参数或环境变量。

二、集合(Set)

1. 定义与特性

  • 无序可变容器:元素唯一且不可重复,不支持索引访问。

  • 去重利器:自动去除重复元素,适合数据清洗。

  • 哈希约束:元素必须是不可变类型(如数字、字符串、元组)。

2. 基本操作

定义集合

复制代码
# 定义集合
s1 = {1, 2, 2, 3}          # 自动去重 → {1, 2, 3}
s2 = set("hello")           # → {'h', 'e', 'l', 'o'}

去重应用

复制代码
# 去重应用
lst = [1, 2, 2, 3, 4]
unique_lst = list(set(lst)) # → [1, 2, 3, 4]

集合运算

复制代码
# 集合运算
a = {1, 2, 3}
b = {3, 4, 5}
print(a & b)                # 交集 → {3}
print(a | b)                # 并集 → {1, 2, 3, 4, 5}

3. 应用场景

  • 数据去重:快速清理重复记录。

  • 成员检查:in 操作时间复杂度为 O(1),效率极高。

  • 集合运算:交集、并集、差集等数学操作。

三、元组(Tuple)

1. 定义与特性

  • 不可变有序容器:元组由一系列元素组成,一旦创建无法修改(增删改),内存地址固定。

  • 支持混合类型:元素可以是数字、字符串、列表等任意数据类型。

  • 有序可索引:与列表和字符串类似,支持索引取值和切片操作。

2. 基本操作

定义元组

复制代码
# 定义元组
t1 = (1, "apple", [2, 3])  # 逗号是关键,单元素需写为 (12,)
t2 = tuple("hello")         # → ('h', 'e', 'l', 'l', 'o'

索引与切片

复制代码
# 索引与切片
print(t1[1])        # 输出 "apple"
print(t2[1:4])      # 输出 ('e', 'l', 'l')

元组解包

复制代码
# 元组解包
a, b, c = (10, 20, 30)
print(a, b, c)      # 输出 10 20 30

3. 应用场景

  • 存储不可变数据:如身份证号、IP地址、配置参数。

  • 函数多返回值:函数返回多个值时自动打包为元组。

  • 字典键:元组不可变,可作为字典的键。四、对比与总结

四、对比与总结

|-------|-------------|------------|----------------|
| 特性 | 元组(Tuple) | 集合(Set) | 字典(Dictionary) |
| 可变性 | 不可变 | 可变 | 可变 |
| 元素唯一性 | 允许重复 | 元素唯一 | 键唯一,值可重复 |
| 有序性 | 有序 | 无序 | Python 3.7+ 有序 |
| 查询效率 | 索引访问(O(1)) | 成员检查(O(1)) | 键查询(O(1)) |
| 典型应用 | 不可变数据、函数返回值 | 去重、集合运算 | 结构化数据、快速查找 |

选择建议:

  • 元组:数据需保护不被修改时使用(如常量配置)。

  • 集合:快速去重或检查元素是否存在时使用。

  • 字典:需通过键高效管理关联数据时使用。

五、代码实战示例

示例1:统计单词频率(字典应用)

复制代码
text = "apple banana apple orange banana apple"
words = text.split()
frequency = {}

for word in words:
    frequency[word] = frequency.get(word, 0) + 1

print(frequency)  # → {'apple':3, 'banana':2, 'orange':1}

示例2:列表去重(集合应用)

复制代码
data = [1, 2, 2, 3, 4, 4, 5]
unique_data = list(set(data))  # → [1, 2, 3, 4, 5]

示例3:多返回值函数(元组应用)

复制代码
def get_user_info():
    return "Alice", 25, "Beijing"

name, age, city = get_user_info()

掌握元组、集合、字典的核心特性与操作,能够大幅提升Python编程效率。合理选择数据结构,是写出优雅高效代码的关键!

相关推荐
乌旭6 分钟前
GPU虚拟化技术在深度学习集群中的应用实践
数据结构·人工智能·深度学习·机器学习·ai·架构·gpu算力
七七知享9 分钟前
开启 Python 编程之旅:基础入门实战班全解析
开发语言·python·程序人生·程序员·零基础·实战
repetitiononeoneday10 分钟前
java基础课程-springmvc课程
java·开发语言
蹦蹦跳跳真可爱58918 分钟前
Python----机器学习(基于PyTorch框架的逻辑回归)
pytorch·python·机器学习·逻辑回归
Mr.每天进步一小步19 分钟前
每天记录一道Java面试题---day39
java·jvm·面试
工业互联网专业20 分钟前
基于springboot+vue的数码产品抢购系统
java·vue.js·spring boot·毕业设计·源码·课程设计·数码产品抢购系统
敖云岚20 分钟前
【AI】SpringAI 第二弹:接入 DeepSeek 官方服务
java·人工智能·spring boot·后端·spring
0502081024 分钟前
各种排序算法
数据结构·算法·排序算法
purrrew24 分钟前
【数据结构_6】双向链表的实现
java·数据结构·链表
bing_15826 分钟前
Redis 的不同数据结构分别适用于哪些微服务场景
数据结构·redis·微服务