DukeDuke
主页
文档转换
关于我们
主页
文档转换
关于我们
  • 什么是Python
  • Python简介
  • Python安装
  • Python基础语法
  • Python数据类型
  • Python数字
  • Python字符串
  • Python列表
  • Python元组
  • Python字典
  • Python日期时间
  • Python文件操作
  • Python异常处理
  • Python函数
  • Python类
  • Python模块
  • Python包
  • Python多线程
  • Python面向对象
  • Python爬虫
  • Django web框架

Python 字典

字典(Dictionary)是 Python 中最灵活的数据类型之一,它是一个无序的、可变的、键值对(key-value)的集合。

1. 字典的基本概念

  • 字典使用花括号 {} 创建
  • 每个键值对用冒号 : 分隔
  • 键必须是唯一的,且必须是不可变类型(如字符串、数字或元组)
  • 值可以是任何数据类型

2. 创建字典

# 创建空字典
empty_dict = {}

# 创建包含键值对的字典
person = {
    "name": "张三",
    "age": 25,
    "city": "北京"
}

# 使用 dict() 构造函数创建字典
person2 = dict(name="李四", age=30, city="上海")

3. 访问字典元素

# 使用键访问值
name = person["name"]  # 返回 "张三"

# 使用 get() 方法(更安全的方式)
age = person.get("age")  # 返回 25
salary = person.get("salary", 0)  # 如果键不存在,返回默认值 0

4. 修改字典

# 添加新的键值对
person["job"] = "工程师"

# 修改现有值
person["age"] = 26

# 删除键值对
del person["city"]
# 或使用 pop() 方法
age = person.pop("age")

5. 字典的常用方法

# 获取所有键
keys = person.keys()

# 获取所有值
values = person.values()

# 获取所有键值对
items = person.items()

# 清空字典
person.clear()

# 复制字典
person_copy = person.copy()

6. 字典的遍历

# 遍历键
for key in person:
    print(key)

# 遍历键值对
for key, value in person.items():
    print(f"{key}: {value}")

7. 字典推导式

# 创建数字平方的字典
squares = {x: x**2 for x in range(5)}
# 结果: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

8. 实际应用示例

# 学生成绩管理
students = {
    "张三": {"语文": 85, "数学": 92, "英语": 88},
    "李四": {"语文": 78, "数学": 95, "英语": 82},
    "王五": {"语文": 92, "数学": 88, "英语": 90}
}

# 计算平均分
def calculate_average(student_name):
    scores = students[student_name]
    return sum(scores.values()) / len(scores)

# 查找最高分科目
def find_highest_score(student_name):
    scores = students[student_name]
    return max(scores.items(), key=lambda x: x[1])

9. 注意事项

  1. 字典是无序的(在 Python 3.7+ 中保持插入顺序)
  2. 键必须是不可变类型
  3. 值可以是任何类型,包括其他字典(嵌套字典)
  4. 使用 get() 方法比直接使用 [] 更安全
  5. 字典的查找效率很高,时间复杂度为 O(1)

10. 性能考虑

  • 字典的查找、插入和删除操作都是 O(1) 时间复杂度
  • 适合需要频繁查找、插入和删除的场景
  • 相比列表,字典占用更多内存,因为需要存储键值对
  • 在需要保持数据顺序时,可以考虑使用 collections.OrderedDict
最近更新:: 2026/4/17 13:21
Contributors: Duke
Prev
Python元组
Next
Python日期时间