找回密码
 立即注册
首页 业界区 业界 Python 使用 Dict 和 Set:从入门到进阶

Python 使用 Dict 和 Set:从入门到进阶

奄幂牛 2025-8-4 20:37:21
Python 里的 dict(字典)和 set(集合)是非常常用的数据结构。它们不仅高效,而且语法也不复杂,是你写出优雅 Python 代码的必经之路。
它们是 Python 的王牌数据结构之一,掌握它们,你的代码会更简洁更高效。


参考文章: Python 使用 Dict 和 Set | 简单一点学习

一、基础入门:搞懂 dict 和 set 是啥

1.1 什么是 dict(字典)?

字典是“键-值”对的集合,键是唯一的,值可以是任意对象。
  1. person = {
  2.     "name": "小明",
  3.     "age": 18,
  4.     "city": "北京"
  5. }
复制代码
字典的特点:

  • 键必须是不可变类型(通常是字符串、数字、元组)
  • 查找速度快,效率高
  • 无序(从 Python 3.7 开始,插入顺序会被保留)
1.2 什么是 set(集合)?

集合是一个无序、无重复元素的集合体。
  1. fruits = {"apple", "banana", "orange"}
复制代码
集合的特点:

  • 元素唯一,自动去重
  • 可用于集合运算(交集、并集、差集等)
  • 也是无序的,不能通过索引访问
二、常见操作:增删改查那点事

2.1 字典 dict 的基本操作
  1. person = {"name": "小明", "age": 18}
  2. # 查
  3. print(person["name"])         # 小明
  4. print(person.get("gender"))   # None,不会报错
  5. # 增
  6. person["gender"] = "male"
  7. # 改
  8. person["age"] = 20
  9. # 删
  10. del person["gender"]
  11. person.pop("age")  # 返回值是被删掉的值
  12. # 遍历
  13. for key, value in person.items():
  14.     print(key, value)
复制代码
2.2 集合 set 的基本操作
  1. fruits = {"apple", "banana"}
  2. # 查(不能用索引,只能遍历)
  3. for fruit in fruits:
  4.     print(fruit)
  5. # 增
  6. fruits.add("orange")
  7. # 删
  8. fruits.remove("banana")  # 如果没有这个元素会报错
  9. fruits.discard("peach")  # 不报错
  10. # 清空
  11. fruits.clear()
复制代码
三、进阶用法:操作集合和字典的骚技巧

3.1 字典推导式

快速构建字典的方式:
  1. squares = {x: x * x for x in range(5)}
  2. # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
复制代码
3.2 集合推导式
  1. unique_even = {x for x in range(10) if x % 2 == 0}
  2. # {0, 2, 4, 6, 8}
复制代码
3.3 字典常用方法
  1. person.keys()       # 所有键
  2. person.values()     # 所有值
  3. person.items()      # 所有键值对
  4. person.update({"job": "engineer"})  # 批量更新
复制代码
3.4 集合运算
  1. a = {1, 2, 3}
  2. b = {2, 3, 4}
  3. print(a | b)   # 并集 {1, 2, 3, 4}
  4. print(a & b)   # 交集 {2, 3}
  5. print(a - b)   # 差集 {1}
  6. print(a ^ b)   # 对称差集 {1, 4}
复制代码
四、高级进阶:骚操作和性能优化

4.1 用 set 做去重
  1. nums = [1, 2, 2, 3, 4, 4]
  2. unique = list(set(nums))  # 去重后转回列表
复制代码
4.2 用 dict 做计数器(不推荐手写,推荐用 Counter)
  1. words = ["apple", "banana", "apple"]
  2. counter = {}
  3. for word in words:
  4.     counter[word] = counter.get(word, 0) + 1
复制代码
或者用标准库里的:
  1. from collections import Counter
  2. counter = Counter(words)
复制代码
4.3 用 dict 模拟 switch-case 语句
  1. def add(): print("加法")
  2. def sub(): print("减法")
  3. func_map = {
  4.     "add": add,
  5.     "sub": sub
  6. }
  7. func_map.get("add", lambda: print("无操作"))()
复制代码
4.4 用 frozenset 当字典键

因为普通 set 不可哈希,不能作为字典键,但 frozenset 可以:
  1. d = {}
  2. key = frozenset([1, 2, 3])
  3. d[key] = "这是一个键"
复制代码
五、总结一下

对象特性主要应用场景dict键值对存储,查找快结构化数据,映射、缓存set无重复元素,集合运算去重、成员判断、数学集合
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册