一、字典的基础特性特性说明键key必须是不可变类型字符串、数字、元组且唯一重复键会覆盖值value可任意类型列表、字典、函数等可重复可变性支持增 删 改键值对是可变对象查找效率基于哈希表实现查找 / 修改效率远高于列表O (1) 时间复杂度二、字典的创建1. 基础创建大括号{}python运行展开代码语言TXT自动换行AI代码解释# 空字典 empty_dict {} # 普通字典键唯一重复键会覆盖 student { name: Tom, age: 18, gender: 男, scores: [85, 90, 95], # 值为列表 address: {city: 北京, district: 海淀} # 值为字典 } # 重复键后定义的覆盖先定义的 duplicate_key {a: 1, a: 2} print(duplicate_key) # 输出{a: 2}2.dict()构造函数创建python运行展开代码语言TXT自动换行AI代码解释# 方式1传入键值对参数 person dict(nameLisa, age20, gender女) print(person) # {name: Lisa, age: 20, gender: 女} # 方式2传入可迭代对象如列表/元组的二元组 data [(id, 101), (score, 98)] info dict(data) print(info) # {id: 101, score: 98} # 方式3fromkeys() 创建统一赋值默认值 # 语法dict.fromkeys(键列表, 默认值) keys [a, b, c] default_dict dict.fromkeys(keys, 0) print(default_dict) # {a: 0, b: 0, c: 0}三、字典的核心操作1. 取值访问值python运行展开代码语言TXT自动换行AI代码解释student {name: Tom, age: 18} # 方式1键索引键不存在会报错 KeyError print(student[name]) # Tom # 方式2get() 方法推荐键不存在返回默认值避免报错 print(student.get(age)) # 18 print(student.get(height, 1.75)) # 1.75键不存在返回默认值 print(student.get(height)) # None无默认值时返回 None2. 修改 / 新增值python运行展开代码语言TXT自动换行AI代码解释student {name: Tom, age: 18} # 修改已有键的值 student[age] 19 print(student) # {name: Tom, age: 19} # 新增键值对键不存在时自动新增 student[height] 1.80 student[scores] [85, 90] print(student) # {name: Tom, age: 19, height: 1.8, scores: [85, 90]}3. 删除键值对python运行展开代码语言TXT自动换行AI代码解释student {name: Tom, age: 18, height: 1.8} # 方式1del 关键字键不存在报错 del student[height] print(student) # {name: Tom, age: 18} # 方式2pop() 方法删除并返回值键不存在可指定默认值 age student.pop(age) print(age) # 18 print(student) # {name: Tom} # 方式3popitem() 方法删除最后插入的键值对返回元组 student[gender] 男 item student.popitem() print(item) # (gender, 男) print(student) # {name: Tom} # 方式4clear() 清空所有键值对 student.clear() print(student) # {}4. 成员判断判断键是否存在python运行代码语言TXT自动换行AI代码解释student {name: Tom, age: 18} # 语法key in dict仅判断键不判断值 print(name in student) # True print(height in student) # False print(18 in student) # False值不存在于键中四、字典的常用方法方法作用dict.keys()返回所有键的可迭代对象视图可转列表dict.values()返回所有值的可迭代对象视图dict.items()返回所有键值对的可迭代对象元组形式如 (key, value)dict.update(dict2)合并字典将 dict2 的键值对更新到当前字典重复键覆盖dict.copy()浅拷贝字典避免修改拷贝影响原字典方法示例python运行展开代码语言TXT自动换行AI代码解释student {name: Tom, age: 18, gender: 男} # 1. 获取所有键/值/键值对 print(list(student.keys())) # [name, age, gender] print(list(student.values())) # [Tom, 18, 男] print(list(student.items())) # [(name, Tom), (age, 18), (gender, 男)] # 2. 遍历字典常用 items() for key, value in student.items(): print(f{key}: {value}) # 输出 # name: Tom # age: 18 # gender: 男 # 3. 合并字典 new_info {age: 19, height: 1.8} student.update(new_info) print(student) # {name: Tom, age: 19, gender: 男, height: 1.8} # 4. 拷贝字典 student_copy student.copy() student_copy[name] Jerry print(student) # {name: Tom, ...}原字典不变 print(student_copy) # {name: Jerry, ...}五、字典的高级用法1. 字典推导式快速生成字典python运行展开代码语言TXT自动换行AI代码解释# 语法{key: value for 变量 in 可迭代对象 if 条件} # 示例1生成数字-平方字典 square_dict {i: i*i for i in range(1, 5)} print(square_dict) # {1: 1, 2: 4, 3: 9, 4: 16} # 示例2筛选值大于 80 的成绩 scores {math: 90, english: 75, chinese: 85} high_scores {k: v for k, v in scores.items() if v 80} print(high_scores) # {math: 90, chinese: 85}2. 嵌套字典的访问python运行展开代码语言TXT自动换行AI代码解释# 嵌套字典字典的值是字典 school { class1: { name: 一班, students: [{name: Tom, age: 18}, {name: Lisa, age: 17}] }, class2: { name: 二班, students: [{name: Jerry, age: 18}] } } # 访问二班第一个学生的姓名 print(school[class2][students][0][name]) # Jerry # 修改一班的名称 school[class1][name] 一年级一班 print(school[class1][name]) # 一年级一班3. 有序字典Python 3.7 无需低版本用 OrderedDictPython 3.7 及以上版本的普通字典已默认保留插入顺序低版本可使用collections.OrderedDictpython运行展开代码语言TXT自动换行AI代码解释from collections import OrderedDict od OrderedDict() od[a] 1 od[b] 2 od[c] 3 print(od) # OrderedDict([(a, 1), (b, 2), (c, 3)])4. 字典的解包python运行展开代码语言TXT自动换行AI代码解释# 解包字典为关键字参数 def print_info(name, age): print(f姓名{name}年龄{age}) info {name: Tom, age: 18} print_info(**info) # 等价于 print_info(nameTom, age18) → 姓名Tom年龄18 # 合并字典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}六、常见注意事项键的不可变性列表、字典等可变类型不能作为键否则报错TypeErrorpython运行代码语言TXT自动换行AI代码解释# 错误示例列表作为键 # invalid_dict {[1,2]: value} # TypeError: unhashable type: list # 正确示例元组不可变作为键 valid_dict {(1,2): value}浅拷贝 vs 深拷贝嵌套字典的浅拷贝仅拷贝外层内层仍共享需用copy.deepcopy()python运行代码语言TXT自动换行AI代码解释import copy nested_dict {a: {b: 1}} deep_copy copy.deepcopy(nested_dict) deep_copy[a][b] 2 print(nested_dict) # {a: {b: 1}}原字典不变避免 KeyError优先使用get()方法取值或先判断键是否存在。核心总结字典是「键值对」映射核心优势是快速查找键唯一且不可变值可任意修改常用操作取值get()、修改 / 新增[]、删除pop()/del、遍历items()推导式和嵌套是字典的高频高级用法需重点掌握。