Python字典基础

字典是Python中最灵活的数据结构之一,它通过键值对的方式存储数据,支持快速查找和修改。本教程将帮助你全面掌握Python字典的使用。

字典简介

什么是字典?

字典是Python中的一种映射类型,具有以下特点:

  • 使用键值对(key-value)存储数据
  • 键必须是唯一的且不可变
  • 值可以是任意类型的数据
  • 支持动态添加和删除键值对
  • 查找效率高(基于哈希表实现)

字典的基本形式


# 空字典
empty_dict = {}

# 简单的字典
person = {'name': '张三', 'age': 18}

# 包含不同类型值的字典
mixed = {
    'number': 42,
    'text': 'Hello',
    'list': [1, 2, 3],
    'nested': {'a': 1, 'b': 2}
}
                        

创建字典

创建字典的多种方式

Python提供了多种创建字典的方法,可以根据需要选择最适合的方式。

创建方法示例


# 1. 使用花括号
student = {
    'name': '张三',
    'age': 18,
    'score': 95
}

# 2. 使用dict()构造函数
person = dict(name='李四', age=20, city='北京')

# 3. 使用zip()创建字典
keys = ['a', 'b', 'c']
values = [1, 2, 3]
letter_dict = dict(zip(keys, values))

# 4. 使用字典推导式
squares = {x: x**2 for x in range(5)}

# 5. 创建默认值字典
from collections import defaultdict
grades = defaultdict(list)  # 值默认为空列表
                        

注意事项

  • 键必须是不可变类型(字符串、数字、元组等)
  • 同一个键不能重复,后面的值会覆盖前面的值
  • 创建大型字典时要注意内存使用

访问和修改

字典元素的访问和修改

字典提供了多种方式来访问和修改其中的数据。

基本操作示例


student = {'name': '张三', 'age': 18, 'score': 95}

# 访问元素
print(student['name'])      # 使用键直接访问
print(student.get('age'))   # 使用get()方法访问
print(student.get('phone', '未设置'))  # 指定默认值

# 修改元素
student['age'] = 19        # 修改已存在的值
student['class'] = '三班'   # 添加新的键值对

# 删除元素
del student['score']       # 使用del语句删除
age = student.pop('age')   # 删除并返回值
last = student.popitem()   # 删除并返回最后一项

# 检查键是否存在
if 'name' in student:
    print("找到了名字")
                        

最佳实践

  • 优先使用get()方法访问,可以避免KeyError异常
  • 在删除键之前先检查是否存在
  • 使用popitem()可以安全地删除和获取元素

常用方法

字典的内置方法

Python的字典类型提供了许多有用的内置方法,可以方便地进行各种操作。

方法使用示例


student = {'name': '张三', 'age': 18, 'score': 95}

# 获取所有键、值和键值对
keys = student.keys()
values = student.values()
items = student.items()

# 遍历字典
for key in student:
    print(f"{key}: {student[key]}")

for key, value in student.items():
    print(f"{key}: {value}")

# 更新字典
new_info = {'phone': '123456', 'email': '[email protected]'}
student.update(new_info)

# 清空字典
student.clear()

# 复制字典
shallow_copy = student.copy()
import copy
deep_copy = copy.deepcopy(student)
                        

高级操作

高级字典操作

掌握这些高级操作可以让你更高效地处理字典数据。

高级操作示例


# 字典推导式
prices = {'apple': 5, 'banana': 3, 'orange': 4}
discount_prices = {item: price*0.8 for item, price in prices.items()}

# 合并字典(Python 3.5+)
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
merged = {**dict1, **dict2}

# 使用defaultdict
from collections import defaultdict
word_count = defaultdict(int)
for word in ['apple', 'banana', 'apple', 'orange']:
    word_count[word] += 1

# 使用OrderedDict(保持插入顺序)
from collections import OrderedDict
ordered = OrderedDict()
ordered['a'] = 1
ordered['b'] = 2
ordered['c'] = 3
                        

练习题

巩固练习

通过以下练习题来检验你对字典操作的掌握程度。

基础练习

  1. 创建一个学生信息字典,包含姓名、年龄、成绩等信息。
  2. 实现一个函数,统计字符串中每个字符出现的次数。
  3. 将两个字典合并,如果有重复的键,保留第二个字典的值。

进阶练习

  1. 实现一个简单的通讯录系统,支持增删改查操作。
  2. 使用字典实现一个商品库存管理系统。
  3. 创建一个嵌套字典来表示公司的组织结构。

学习路径:

列表 → 元组 → 字典 → 集合