Python 使用 Dict 和 Set:从入门到进阶
Python 里的 dict(字典)和 set(集合)是非常常用的数据结构。它们不仅高效,而且语法也不复杂,是你写出优雅 Python 代码的必经之路。它们是 Python 的王牌数据结构之一,掌握它们,你的代码会更简洁更高效。
参考文章: Python 使用 Dict 和 Set | 简单一点学习
一、基础入门:搞懂 dict 和 set 是啥
1.1 什么是 dict(字典)?
字典是“键-值”对的集合,键是唯一的,值可以是任意对象。
person = {
"name": "小明",
"age": 18,
"city": "北京"
}字典的特点:
[*]键必须是不可变类型(通常是字符串、数字、元组)
[*]查找速度快,效率高
[*]无序(从 Python 3.7 开始,插入顺序会被保留)
1.2 什么是 set(集合)?
集合是一个无序、无重复元素的集合体。
fruits = {"apple", "banana", "orange"}集合的特点:
[*]元素唯一,自动去重
[*]可用于集合运算(交集、并集、差集等)
[*]也是无序的,不能通过索引访问
二、常见操作:增删改查那点事
2.1 字典 dict 的基本操作
person = {"name": "小明", "age": 18}
# 查
print(person["name"]) # 小明
print(person.get("gender")) # None,不会报错
# 增
person["gender"] = "male"
# 改
person["age"] = 20
# 删
del person["gender"]
person.pop("age")# 返回值是被删掉的值
# 遍历
for key, value in person.items():
print(key, value)2.2 集合 set 的基本操作
fruits = {"apple", "banana"}
# 查(不能用索引,只能遍历)
for fruit in fruits:
print(fruit)
# 增
fruits.add("orange")
# 删
fruits.remove("banana")# 如果没有这个元素会报错
fruits.discard("peach")# 不报错
# 清空
fruits.clear()三、进阶用法:操作集合和字典的骚技巧
3.1 字典推导式
快速构建字典的方式:
squares = {x: x * x for x in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}3.2 集合推导式
unique_even = {x for x in range(10) if x % 2 == 0}
# {0, 2, 4, 6, 8}3.3 字典常用方法
person.keys() # 所有键
person.values() # 所有值
person.items() # 所有键值对
person.update({"job": "engineer"})# 批量更新3.4 集合运算
a = {1, 2, 3}
b = {2, 3, 4}
print(a | b) # 并集 {1, 2, 3, 4}
print(a & b) # 交集 {2, 3}
print(a - b) # 差集 {1}
print(a ^ b) # 对称差集 {1, 4}四、高级进阶:骚操作和性能优化
4.1 用 set 做去重
nums =
unique = list(set(nums))# 去重后转回列表4.2 用 dict 做计数器(不推荐手写,推荐用 Counter)
words = ["apple", "banana", "apple"]
counter = {}
for word in words:
counter = counter.get(word, 0) + 1或者用标准库里的:
from collections import Counter
counter = Counter(words)4.3 用 dict 模拟 switch-case 语句
def add(): print("加法")
def sub(): print("减法")
func_map = {
"add": add,
"sub": sub
}
func_map.get("add", lambda: print("无操作"))()4.4 用 frozenset 当字典键
因为普通 set 不可哈希,不能作为字典键,但 frozenset 可以:
d = {}
key = frozenset()
d = "这是一个键"五、总结一下
对象特性主要应用场景dict键值对存储,查找快结构化数据,映射、缓存set无重复元素,集合运算去重、成员判断、数学集合
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]