python数据结构进阶之字典dict详细教程

 Python 中,字典(dictionary)是最常用的数据结构之一,它以键值对的形式存储数据,具有极高的查找效率.本文将深入探讨 Python 中的字典(dict),并通过详细的示例展示字典的各种用法及高级操作.


1. 字典的基础用法

在开始探讨高级用法之前,让我们先回顾一下字典的基础操作.

创建字典:

# 使用大括号创建字典
student = {
    'name': 'Alice',
    'age': 23,
    'courses': ['Math', 'Computer Science']
}

# 使用 dict() 函数创建字典
student = dict(name='Alice', age=23, courses=['Math', 'Computer Science'])

print(student)

访问和修改字典中的值:

# 访问字典中的值
print(student['name'])  # 输出: Alice

# 修改字典中的值
student['age'] = 24
print(student['age'])  # 输出: 24

添加和删除键值对:

# 添加新键值对
student['grade'] = 'A'
print(student)

# 删除键值对
del student['courses']
print(student)

2. 字典的高级用法

2.1 字典推导式

描述:字典推导式类似于列表推导式,可以用于快速创建或转换字典.

示例:

python
复制代码
# 创建一个字典,键为数字,值为数字的平方
squares = {x: x**2 for x in range(1, 6)}
print(squares)

应用场景:

  • 快速生成映射关系
  • 从现有数据创建新的字典
2.2 合并字典

描述:在 Python 3.9 及以上版本中,可以使用 | 操作符合并两个或多个字典.

示例:

dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}

# 使用 | 操作符合并字典
merged_dict = dict1 | dict2
print(merged_dict)  # 输出: {'a': 1, 'b': 3, 'c': 4}

注意:合并时,后一个字典的值会覆盖前一个字典中的同名键.

2.3 使用 get() 方法

描述:get() 方法可以用于安全地访问字典中的值,在键不存在时返回默认值而不是抛出异常.

示例:

# 尝试获取存在的键
print(student.get('name'))  # 输出: Alice

# 尝试获取不存在的键,返回默认值
print(student.get('address', 'Not Found'))  # 输出: Not Found

应用场景:

  • 安全地访问可能不存在的键
  • 避免 KeyError 异常

3. 字典的特殊用法

3.1 嵌套字典

描述:字典可以包含其他字典作为值,这使得它非常适合表示复杂的多层次数据结构.

示例:

# 创建一个嵌套字典
school = {
    'student': {
        'name': 'Bob',
        'age': 20
    },
    'course': {
        'name': 'Physics',
        'credits': 3
    }
}

# 访问嵌套字典中的值
print(school['student']['name'])  # 输出: Bob

应用场景:

  • 组织层次结构的数据
  • 创建复杂的配置文件
3.2 使用 defaultdict

描述:collections.defaultdict 提供了一种创建默认值的字典,如果访问的键不存在,可以自动初始化值.

示例:

from collections import defaultdict

# 创建一个默认值为列表的 defaultdict
dd = defaultdict(list)

# 向字典中添加值
dd['fruits'].append('apple')
dd['fruits'].append('banana')

print(dd['fruits'])  # 输出: ['apple', 'banana']

应用场景:

  • 处理需要自动初始化的集合或计数
  • 避免检查键是否存在

总结

本文详细介绍了 Python 中字典(dict)的基础和高级用法.通过各种示例展示了字典推导式、字典合并、get() 方法、嵌套字典及 defaultdict 等高级操作的应用场景和实际用途.字典作为 Python 中最重要的数据结构之一,具有高效、灵活的特点,是每位 Python 开发者必须掌握的工具。

THE END