当前位置:首页>python>Python 字典(dict)超详细教程

Python 字典(dict)超详细教程

  • 2026-10-11 08:28:07
Python 字典(dict)超详细教程

一、字典(dict)是什么

  • • 字典是 键值对(key-value) 结构的无序(3.7+有序)可变容器
  • • 每个数据都是 键: 值 形式
  • • 键(key)必须不可变 + 唯一:字符串、数字、元组
  • • 值(value)任意类型:可重复、可变
  • • 查找速度极快,通过 key 直接找 value

二、字典的创建

1. 直接创建(最常用)

# 空字典
d1 = {}

# 普通字典
d2 = {"name": "小明", "age": 18, "city": "北京"}

# 混合键值
d3 = {1: "a", "id": 1001, (1,2): [3,4]}

2. 使用 dict() 函数创建

d4 = dict(name="小红", age=20)
# {'name': '小红', 'age': 20}

d5 = dict([("name", "小刚"), ("score", 90)])

3. fromkeys 创建统一值字典

d6 = dict.fromkeys(["a", "b", "c"], 0)
# {'a':0, 'b':0, 'c':0}

三、键值对基本操作(增、删、改、查)

1. 查(通过 key 获取 value)

d = {"name": "小明", "age": 18}

print(d["name"])    # 小明
print(d["age"])     # 18

⚠️ 注意:key 不存在会直接报错 KeyError

2. 改(修改已有 key 的 value)

key 存在就是修改

d["age"] = 19
print(d)  # {'name': '小明', 'age': 19}

3. 增(添加新 key-value)

key 不存在就是新增

d["city"] = "上海"
print(d)  # {'name': '小明', 'age': 19, 'city': '上海'}

4. 删除(del 语句)

del d["city"]
print(d)  # city 被删除

四、字典常用方法(高频重点)

1. get(key, default=None) 安全获取

key 不存在不报错,返回默认值

d = {"name": "小明"}

print(d.get("name"))      # 小明
print(d.get("age"))       # None
print(d.get("age", 0))    # 0

2. keys() 获取所有键

d = {"a":1, "b":2, "c":3}
print(d.keys())   # dict_keys(['a', 'b', 'c'])

# 遍历
for k in d.keys():
print(k)

3. values() 获取所有值

print(d.values())  # dict_values([1,2,3])

4. items() 获取所有键值对(最常用)

print(d.items())
# dict_items([('a',1), ('b',2), ('c',3)])

# 遍历键值对
for k, v in d.items():
print(k, v)

5. update() 批量更新/添加

d = {"name": "小明"}
d.update({"age":18, "city":"北京"})
print(d)
# {'name':'小明', 'age':18, 'city':'北京'}

6. pop(key) 删除指定 key 并返回 value

d = {"a":1, "b":2}
val = d.pop("a")
print(val)  # 1
print(d)    # {'b':2}

7. popitem() 删除最后一对(3.7+)

d.popitem()

8. clear() 清空字典

d.clear()  # {}

五、字典遍历(3 种方式)

d = {"name": "小明", "age": 18}

# 1. 遍历 key
for k in d:
print(k, d[k])

# 2. 遍历 key
for k in d.keys():
print(k)

# 3. 遍历键值对(最推荐)
for k, v in d.items():
print(k, v)

六、字典推导式(Dict Comprehension)

和列表推导式类似,语法:

{键表达式: 值表达式 for 变量 in 可迭代对象 if 条件}

1. 基础字典推导式

# 生成 {0:0, 1:1, ... 9:9}
d = {i:i for i inrange(10)}

2. 键值互换

d = {"a":1, "b":2}
reverse_d = {v:k for k,v in d.items()}
# {1:'a', 2:'b'}

3. 带条件筛选

d = {"a":1, "b":2, "c":3, "d":4}
new_d = {k:v for k,v in d.items() if v % 2 == 0}
# {'b':2, 'd':4}

4. 列表转字典

lst = [("name","小明"), ("age",18)]
d = {k:v for k,v in lst}

七、字典的 key 规则(必记)

  1. 1. key 必须不可变:str / int / float / tuple
  2. 2. list 不能做 key
  3. 3. key 唯一,重复 key 会覆盖前面
d = {"a":1, "a":2}
print(d)  # {'a':2}

八、字典 vs 列表 对比

特点
列表 list
字典 dict
存储方式
有序元素序列
键值对映射
查找方式
索引(数字)
key(任意不可变类型)
可变性
可变
可变
查找速度
慢(从头找)
极快
顺序(3.7+)
有序
有序

📚 练习题(带答案讲解)

练习1

创建字典,添加、修改、获取值

stu = {"id": 1001, "name": "小明"}
stu["age"] = 18
stu["name"] = "小红"
print(stu.get("score", 0))
print(stu)

答案:

0
{'id':1001, 'name':'小红', 'age':18}

练习2

items 遍历

d = {"a":10, "b":20}
for k, v in d.items():
print(k + str(v))

答案:

a10
b20

练习3

字典推导式:把 [1,2,3,4] 变成 {1:1, 2:4, 3:9, 4:16}

d = {i:i*i for i in [1,2,3,4]}
print(d)

答案:{1:1,2:4,3:9,4:16}


📝 本章总结

  1. 1. 字典是 key-value 结构,key 必须不可变、唯一
  2. 2. 增删改查:d[key]、d[key]=val、del d[key]
  3. 3. 核心方法:
    • • get() 安全取值
    • • keys()/values()/items() 遍历
    • • update() 批量更新
    • • pop() 删除并返回
  4. 4. 字典推导式:快速生成字典,简洁高效
  5. 5. 查找速度极快,适合做映射、配置、缓存

最新文章

随机文章