11.字典(Dict)操作

11.字典(Dict)操作

欢迎来到《10天学会Python》第6天!今天学习字典——Python中最实用的数据结构,像是现实中的“通讯录”,通过名字(键)快速找到电话(值)。

核心概念

字典是键值对(Key-Value Pair) 的映射容器,通过唯一的键快速查找对应的值。就像通讯录中通过名字找电话一样高效。

python

# 创建字典示例
student = {"name": "小明", "age": 18, "major": "计算机"}

重要特性

  • 唯一键:每个键在字典中唯一
  • 高效查找:通过键查找值速度极快
  • 可变容器:可随时增删改键值对
  • 无序性:不要依赖元素的顺序

创建字典的三种方法

1. 直接创建(最常用)

python

contacts = {"张三": "13800138000", "李四": "13900139000"}
prices = {"苹果": 8.5, "香蕉": 6.0}

2. 使用dict()函数

python

student = dict(name="小明", age=18, major="计算机")
items = [("name", "小红"), ("age", 19)]
student2 = dict(items)

3. 字典推导式

python

squares = {x: x**2 for x in range(1, 11)}
fruits = {"苹果": 8.5, "香蕉": 6.0, "橙子": 9.0}
expensive = {name: price for name, price in fruits.items() if price > 8}

常用操作详解

访问值

python

student = {"name": "小明", "age": 18}
name = student["name"]  # "小明"
age = student.get("age")  # 18
grade = student.get("grade", "未设置")  # "未设置"

添加和修改

字典添加和修改使用相同语法,如果键不存在则添加,存在则修改:

python

student = {"name": "小明"}
student["age"] = 18  # 添加新键值对
student["age"] = 19  # 修改已有键的值

# update()批量更新,可以合并多个字典
student.update({"city": "北京", "grade": "大一"})

注意:键可以是字符串、数字、元组(不可变类型),但不能是列表、字典等可变类型。

删除键值对

删除操作有三种方式,根据需求选择:

python

student = {"name": "小明", "age": 18, "major": "计算机"}

# del语句:直接删除,键不存在会报错
del student["age"]

# pop():删除并返回值,可指定默认值避免错误
name = student.pop("name")  # 返回"小明"
grade = student.pop("grade", "未设置")  # 键不存在时返回默认值

# clear():清空整个字典
student.clear()  # 变为{}

建议:不确定键是否存在时,使用 pop(key, default)更安全。

常用字典方法

获取键、值、键值对

这些方法返回的是视图对象,可以动态反映字典变化:

python

student = {"name": "小明", "age": 18, "major": "计算机"}

# keys():所有键
keys = student.keys()  # dict_keys(['name', 'age', 'major'])
key_list = list(keys)  # 转换为列表

# values():所有值
values = student.values()  # dict_values(['小明', 18, '计算机'])

# items():所有键值对,常用于遍历
items = student.items()  # dict_items([('name', '小明'), ('age', 18), ('major', '计算机')])

# 遍历字典的标准方式
for key, value in student.items():
    print(f"{key}: {value}")

setdefault()智能设置

python

student = {"name": "小明", "age": 18}
grade = student.setdefault("grade", "大一")  # 设置"大一"并返回
age = student.setdefault("age", 20)  # 返回现有值18

代码示例(5个生活场景)

示例1:智能通讯录

python

contacts = {
    "张三": {"phone": "13800138000", "group": "同事"},
    "李四": {"phone": "13900139000", "group": "朋友"}
}
name = input("请输入联系人姓名:")
if name in contacts:
    print(f"📞 {name}: {contacts[name]['phone']}")
else:
    print("❌ 联系人不存在")

示例2:单词频率统计

python

text = "Python是一种简单易学功能强大的编程语言Python语言适合初学者学习"
words = text.split()
word_count = {}
for word in words:
    word_count[word] = word_count.get(word, 0) + 1
print(word_count)

示例3:学生成绩管理

python

students = {
    "小明": {"数学": 85, "英语": 92, "Python": 88},
    "小红": {"数学": 90, "英语": 88, "Python": 95}
}
for name, scores in students.items():
    avg = sum(scores.values()) / len(scores)
    students[name]["平均分"] = round(avg, 1)
print(students)

示例4:商品库存系统

python

inventory = {
    "苹果": {"price": 8.5, "stock": 100},
    "香蕉": {"price": 6.0, "stock": 150}
}
def buy_product(name, quantity):
    if name in inventory:
        item = inventory[name]
        if item["stock"] >= quantity:
            item["stock"] -= quantity
            return item["price"] * quantity
    return 0
cost = buy_product("苹果", 3)
print(f"花费:{cost}元")

示例5:多级字典配置

python

app_config = {
    "database": {"host": "localhost", "port": 3306},
    "server": {"port": 8000, "debug": True}
}
db_host = app_config["database"]["host"]  # "localhost"
debug_mode = app_config["server"]["debug"]  # True

实践应用:个人单词本

用字典管理个人单词本,实现添加和查找功能:

python

word_book = {
    "python": {"meaning": "蟒蛇;Python编程语言"},
    "variable": {"meaning": "变量"}
}

def add_word(word, meaning):
    word_book[word] = {"meaning": meaning}
    print(f"✅ 已添加:{word}")

def find_word(word):
    info = word_book.get(word)
    if info:
        print(f"📖 {word}: {info['meaning']}")
    else:
        print(f"❌ 未找到")

add_word("list", "列表")
find_word("python")

练习题

练习1:基础操作

创建字典 student = {"name": "小明", "age": 18, "score": 85}

  1. 获取并打印姓名和年龄
  2. 添加新键值对 "major": "计算机"
  3. 将分数改为90分
  4. 删除年龄键值对
  5. 使用 get() 尝试获取 "grade",默认值 "未设置"

练习2:通讯录管理系统

设计通讯录程序,功能:

  1. 添加联系人(姓名、电话、分组)
  2. 查找联系人
  3. 删除联系人
  4. 显示所有联系人
  5. 统计各分组人数

练习3:单词分析器

输入英文文本,完成:

  1. 统计每个单词出现次数
  2. 找出频率最高的3个单词
  3. 计算单词平均长度
  4. 统计以'a'开头的单词数量
  5. 创建字典,键为单词长度,值为该长度单词列表

总结

字典是Python中最强大的数据结构,核心是键值对映射,适合快速查找和更新。掌握字典能处理真实世界复杂数据。

明天学习字符串操作!


学习建议:多用字典解决实际问题。

10.元组与集合 2026-01-21
12.字符串操作 2026-01-21

评论区