Python编程实战 · 基础入门篇 | 字典(dict)

在 Python 的世界里,除了列表(list)和元组(tuple)这样的序列类型 ,还有一种更灵活的数据结构------字典(dict) 。 如果说列表像"有序的货架",那么字典就像"带标签的抽屉":每个数据都有一个唯一的"名字",叫做 键(key)。

字典是 Python 最常用、最强大的数据结构之一。它能高效地存储和查找数据,被广泛用于配置、数据映射、缓存、对象建模等场景。


一 什么是字典

字典(Dictionary)是一种 键值对(key-value) 的数据结构。 它以 键(key) 定位对应的 值(value),而不是通过索引。

语法格式如下:

python 复制代码
# 创建字典
person = {"name": "Alice", "age": 25, "city": "Beijing"}

结构理解:

  • 键(key)就像标签,必须是唯一且不可变的对象(如字符串、数字、元组);
  • 值(value)可以是任意类型;
  • 使用大括号 {} 包裹多个键值对,每对之间用逗号分隔。

二 字典的创建方式

1. 使用大括号直接创建

python 复制代码
student = {"name": "Tom", "age": 20, "grade": "A"}

2. 使用 dict() 函数

python 复制代码
student = dict(name="Tom", age=20, grade="A")

3. 从键值对列表创建

python 复制代码
student = dict([("name", "Tom"), ("age", 20), ("grade", "A")])

4. 使用 fromkeys() 创建具有相同值的字典

python 复制代码
keys = ["a", "b", "c"]
d = dict.fromkeys(keys, 0)
print(d)  # {'a': 0, 'b': 0, 'c': 0}

三 访问与修改字典

1. 按键访问

python 复制代码
person = {"name": "Alice", "age": 25}
print(person["name"])  # Alice

如果访问不存在的键,会报错:

python 复制代码
print(person["gender"])  # KeyError

2. 使用 get() 安全访问

python 复制代码
print(person.get("gender", "未知"))  # 未知

get() 不存在的键时返回默认值,不会报错。

3. 修改与新增键值对

python 复制代码
person["age"] = 26          # 修改
person["city"] = "Beijing"  # 新增
print(person)

4. 删除键值对

python 复制代码
del person["city"]       # 删除指定键
person.pop("age")        # 删除并返回该值
person.clear()           # 清空整个字典

四 遍历字典

字典支持三种主要遍历方式:

python 复制代码
person = {"name": "Alice", "age": 25, "city": "Beijing"}

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

# 遍历值
for value in person.values():
    print(value)

# 遍历键值对
for key, value in person.items():
    print(key, "=>", value)

输出:

ini 复制代码
name => Alice
age => 25
city => Beijing

五 字典的常用方法

方法 作用
dict.keys() 返回所有键
dict.values() 返回所有值
dict.items() 返回键值对元组
dict.get(key, default) 获取指定键的值
dict.pop(key) 删除并返回指定键的值
dict.update(other) 合并其他字典
dict.copy() 返回字典的浅拷贝
dict.clear() 清空字典内容

示例:

python 复制代码
user = {"name": "Tom", "age": 20}
extra = {"city": "Shanghai"}
user.update(extra)
print(user)  # {'name': 'Tom', 'age': 20, 'city': 'Shanghai'}

六 字典的键(key)必须可哈希

字典的键必须是不可变类型,比如字符串、整数或元组。 以下写法是合法的:

python 复制代码
d = {
    "name": "Lucy",
    1: "数字键",
    (1, 2): "元组键"
}

但以下是错误的:

python 复制代码
d = {[1, 2]: "列表键"}  # ❌ TypeError: unhashable type: 'list'

七 字典推导式

Python 还支持使用 推导式(dict comprehension) 来快速生成字典。

示例:

python 复制代码
squares = {x: x**2 for x in range(1, 6)}
print(squares)

输出:

yaml 复制代码
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

还可以使用条件过滤:

python 复制代码
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}

八 实战案例:学生成绩统计

python 复制代码
scores = {
    "Tom": 88,
    "Lucy": 92,
    "Jack": 76
}

# 输出最高分
max_name = max(scores, key=scores.get)
print(f"最高分是 {max_name}:{scores[max_name]}")

# 计算平均分
avg_score = sum(scores.values()) / len(scores)
print(f"平均分是 {avg_score:.2f}")

输出:

复制代码
最高分是 Lucy:92
平均分是 85.33

字典的灵活键值访问使得数据处理变得直观高效。


九 小结

特点 说明
数据结构 键值对(key-value)
是否有序 Python 3.7+ 起默认保持插入顺序
键是否唯一 ✅ 唯一
键是否可变 ❌ 不可变
常用操作 访问、修改、删除、遍历、合并
推导式 支持字典推导式创建新字典

🔹 总结

  1. 字典是 Python 中最灵活的数据容器,用于键值对映射。
  2. 键必须是不可变对象(如字符串、数字、元组)。
  3. 使用 {} 定义,支持各种创建与遍历方式。
  4. get()、items()、update() 等方法是开发中最常用的。
  5. 字典推导式让生成复杂结构变得简洁高效。

相关推荐
CQU_JIAKE6 小时前
11.7[高体】
java·后端·spring
Csvn7 小时前
认识 Nginx
后端·nginx
红尘散仙7 小时前
谁说终端只能敲键盘?我用 Rust 给小说阅读器加上了鼠标
前端·后端·rust
特立独行的猫A8 小时前
我给女儿写了个打字练习:一边敲键盘,一边把小学英语单词记牢
java·后端·python
cpolar技术支持8 小时前
「我这边连不上你那个服务」—— 用清单驱动的 TCP 连通性只读看板,cpolar 让远端同事自己取证
python·内网穿透·tcp·cpolar·网络诊断
陈随易9 小时前
C++26 草案被否,二十八年来头一回
前端·后端·程序员
云和数据.ChenGuang9 小时前
LangGraph 异步 Node 的设计与写法实践
开发语言·人工智能·python·机器学习·php
金銀銅鐵9 小时前
同一个 Hello World,Kotlin 和 Java 在字节码层面差在哪
jvm·后端·kotlin
天诰10 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
benchmark_cc11 小时前
用 QuantDash 读取美股行情:AAPL.US 的运行前检查、排错顺序与数据校验清单
python·数据分析·pandas·量化交易·股票数据·quantdash