在 Python 中,字典(dict) 是最常用的数据结构之一。它以 键值对(key-value) 的形式存储数据,查找速度非常快,是面试高频考点之一。本文将带你快速掌握字典的常见操作与高频函数。
一、创建字典
使用大括号
person = {"name": "Tom", "age": 20, "city": "Beijing"}
使用 dict() 构造函数
info = dict(name="Alice", age=25)
创建空字典
empty_dict = {}
二、访问字典
- 通过键访问
person = {"name": "Tom", "age": 20}
print(person["name"]) # Tom
如果访问不存在的键,会报 KeyError。
- 使用 get() 方法
print(person.get("name")) # Tom
print(person.get("gender")) # None
print(person.get("gender", "男")) # 男
优势:get() 可以设置默认值,避免报错。
三、增删改操作
- 新增键值对
person["gender"] = "男"
print(person) # {"name": "Tom", "age": 20, "gender": "男"}
- 修改值
person["age"] = 30
print(person) # {"name": "Tom", "age": 30, "gender": "男"}
- 删除键值对
使用 pop()
val = person.pop("age")
print(val) # 30
print(person) # {"name": "Tom", "gender": "男"}
使用 del
del person["gender"]
print(person) # {"name": "Tom"}
四、字典的遍历
person = {"name": "Tom", "age": 20}
- 遍历键
for key in person.keys():
print(key)
- 遍历值
for value in person.values():
print(value)
- 遍历键值对
for k, v in person.items():
print(k, v)
五、高频函数与方法
- update() ------ 批量更新
person = {"name": "Tom", "age": 20}
person.update({"age": 25, "city": "Beijing"})
print(person) # {"name": "Tom", "age": 25, "city": "Beijing"}
- popitem() ------ 删除最后一个键值对
info = {"a": 1, "b": 2}
print(info.popitem()) # ('b', 2)
print(info) # {'a': 1}
- setdefault() ------ 获取键,如果不存在则设置默认值
person = {"name": "Tom"}
print(person.setdefault("age", 20)) # 20
print(person) # {"name": "Tom", "age": 20}
六、字典推导式
squares = {x: x**2 for x in range(5)}
print(squares) # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
结合条件语句:
even_squares = {x: x**2 for x in range(10) if x % 2 == 0}
print(even_squares) # {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}
七、面试常考陷阱
-
字典的键必须是不可变对象
-
正确
d = {1: "int", (1, 2): "tuple"}
- 错误:列表是可变对象,不能作为字典键
d = {[1, 2]: "list"} # ❌ TypeError
- 字典的查找速度
字典底层采用 哈希表 实现,查找键的时间复杂度接近 O(1)。这是为什么字典比列表查找更快的原因。
● 八、总结
创建与访问:掌握 [] 与 get() 的区别。
增删改查:熟练使用 pop、update、setdefault 等方法。
遍历与推导式:提高代码简洁性。
面试考点:理解键必须是不可变对象,掌握哈希表原理。
👉 字典是 Python 的核心数据结构之一,既是日常开发的利器,也是面试中必考的重点。