python基础入门:3.2字典(Dict)与集合(Set)

news/2025/2/9 9:31:20/

Python高效数据管理:字典与集合深度剖析

python"># 快速导航
config = {"数据结构": "字典", "特性": ["键值对", "快速查找"]}
unique_nums = {1, 2, 3, 5, 8}  # 集合自动去重

一、字典核心操作全解

1. 键值对基础操作

python"># 创建与修改
user = {"name": "Alice", "age": 28}
user["email"] = "alice@example.com"  # 添加新键
user["age"] = 29                    # 修改值# 安全访问方法
print(user.get("phone", "N/A"))      # 输出N/A而非报错
print(user.setdefault("role", "user"))  # 设置默认值# 删除操作对比
del user["email"]                    # 直接删除
age = user.pop("age")                # 弹出并返回值
user.clear()                         # 清空字典

2. 高级操作方法

python"># 合并字典的三种方式
defaults = {"theme": "dark", "notifications": True}
custom = {"theme": "light"}# 方法1:update()
settings = defaults.copy()
settings.update(custom)# 方法2:字典解包(Python 3.9+)
merged = defaults | custom# 方法3:字典推导式
merged = {k: v for d in [defaults, custom] for k, v in d.items()}

字典操作性能对比

操作平均时间复杂度
查找元素O(1)
插入元素O(1)
删除元素O(1)
遍历所有元素O(n)

二、集合运算实战应用

1. 基础集合运算

python">A = {1, 2, 3, 4}
B = {3, 4, 5, 6}print(A | B)   # 并集 {1,2,3,4,5,6}
print(A & B)   # 交集 {3,4}
print(A - B)   # 差集 {1,2}
print(A ^ B)   # 对称差集 {1,2,5,6}

2. 实际应用场景

python"># 用户标签系统
user1_tags = {"python", "data", "ml"}
user2_tags = {"java", "data", "web"}# 寻找共同兴趣
common_tags = user1_tags & user2_tags# 推荐系统应用
recommended_tags = (user1_tags | user2_tags) - common_tags

3. 性能优化技巧

python"># 快速去重示例
duplicates = [2,5,2,8,5,1,8,8]
unique = list(set(duplicates))  # [1,2,5,8]# 超大数据集处理(10亿元素)
def process_big_data():seen = set()with open('bigdata.txt') as f:for line in f:element = line.strip()if element not in seen:seen.add(element)yield element

三、字典推导式与哈希原理

1. 字典推导式进阶

python"># 基本形式
squares = {x: x**2 for x in range(5)}  # {0:0, 1:1, 2:4, ...}# 条件筛选
students = {"Alice": 89, "Bob": 62, "Charlie": 93}
passed = {name: score for name, score in students.items() if score >= 70}# 键值反转
reverse_dict = {v: k for k, v in students.items()}

2. 哈希表原理浅析

python"># 哈希函数演示示例
def simple_hash(key, table_size):return sum(ord(c) for c in str(key)) % table_sizeprint(simple_hash("apple", 10))  # 输出哈希值位置

哈希表核心机制

  1. 哈希函数将键转换为整数
  2. 通过取模运算确定存储位置
  3. 处理哈希冲突(开放寻址法/链地址法)
  4. 动态扩容机制(当负载因子 > 2/3时扩容)

四、最佳实践与性能指南

  1. 数据结构选择原则

    • 需要键值关联 → 字典
    • 需要快速存在性检测 → 集合
    • 需要有序存储 → Python 3.7+ 字典保持插入顺序
    • 需要数学运算 → 集合
  2. 内存优化方案

python"># 使用__slots__优化字典空间
class OptimizedUser:__slots__ = ('name', 'age')  # 替代实例字典def __init__(self, name, age):self.name = nameself.age = age
  1. 性能对比测试
python">import timeit# 集合 vs 列表的成员检测
list_test = list(range(1000000))
set_test = set(list_test)print("列表查询:", timeit.timeit('999999 in list_test', number=100, globals=globals()))
print("集合查询:", timeit.timeit('999999 in set_test', number=100, globals=globals()))

典型测试结果

  • 列表查询:约 2.3 秒
  • 集合查询:约 0.000003 秒

扩展思考

  • 如何利用字典实现LRU缓存机制?
  • 在数据序列化时如何处理不可哈希对象?
  • 当哈希冲突严重时,如何设计更优的哈希函数?
  • 字典视图对象(keys/values/items)在动态更新时的行为特性

下节预告:迭代器与生成器——解锁Python流式数据处理能力


http://www.ppmy.cn/news/1570548.html

相关文章

MySQL数据库(七)SQL 优化

一 插入数据 采用方法 1 批量插入 2 手动提交事务 3 主键顺序插入 4* 使用load插入指令数据 二 主键优化 1 数据组织方式 在InnoDB存储引擎中,表中的数据都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表 2 页分裂 页可以为空也可…

光伏-报告显示,假期内,硅料端签单顺序发货相对稳定。若3月份下游存提产,则不排除硅料价格有上调预期。

据TrendForce集邦咨询报告显示,假期内,硅料端按照前期签单顺序发货,相对稳定。若3月份下游存提产,则不排除硅料价格有上调预期。 002306中科云网 旅游 | 公司为提供复合菜系特色餐饮的连锁企业,形成了以粤菜&#xff…

Kotlin 的作用域函数:apply、let、also、run,以及 with、takeIf 和 takeUnless。函数的用法和使用场景

Kotlin中提供几个常用的作用域函数,如果能将它们熟练运用,那将会有效的提高开发效率,降低开发时间,同时保证程序的稳定。那分别是哪几个作用域函数? Kotlin 的作用域函数:apply、let、also、run,以及 with、takeIf 和 takeUnless。这些函数是编写简洁、富有表现力的 Ko…

Win10 部署llama Factory 推荐教程和遇到的问题

教程 【大模型微调】使用Llama Factory实现中文llama3微调_哔哩哔哩_bilibili 大模型微调!手把手带你用LLaMA-Factory工具微调Qwen大模型!有手就行,零代码微调任意大语言模型_哔哩哔哩_bilibili 遇到问题解决办法 pytorch gpu国内镜像下载…

101.对称二叉树 python

对称二叉树 题目题目描述示例 1:示例 2:提示: 题解递归法步骤提交结果 迭代法步骤提交结果 题目 题目描述 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出…

客户端脚本安全设置:如何保障您的Web应用免受攻击?

随着现代Web开发的不断发展,客户端脚本在增强用户互动和提升网站体验方面扮演着重要角色。然而,这些便利的背后也伴随着潜在的安全风险,恶意攻击者可能会利用这些漏洞进行攻击。因此,确保客户端脚本的安全至关重要。本文将带您了解…

Centos Ollama + Deepseek-r1+Chatbox运行环境搭建

Centos Ollama Deepseek-r1Chatbox运行环境搭建 内容介绍下载ollama在Ollama运行DeepSeek-r1模型使用chatbox连接ollama api 内容介绍 你好! 这篇文章简单讲述一下如何在linux环境搭建 Ollama Deepseek-r1。并在本地安装的Chatbox中进行远程调用 下载ollama 登…

Android双屏异显Presentation接口使用说明

在点餐、收银、KTV等场景,对于双屏异显的需求是非常多的,首先可以节省硬件成本。而现在的智能板卡很多运行Android系统,从Android4.2开始支持WiFi Display(Miracast)功能后,就开始支持双屏异显Presentation这套应用层接口了,下面以Android5.1系统来说明这套接口的使用要…