在 Python 编程中,字典(Dictionary)是一种极具灵活性的数据结构,它通过 “键 - 值对”(key-value pair)的形式存储数据,如同现实生活中的字典 —— 通过 “词语(键)” 快速查找 “释义(值)”。相较于列表和元组的有序索引访问,字典的优势在于基于键的快速查找,这使得它在处理需要频繁通过唯一标识获取数据的场景中极为高效。掌握字典的操作,能让我们更高效地组织和管理复杂数据,是 Python 编程中不可或缺的核心技能。接下来,让我们深入探索字典操作的奥秘
字典是一种可变容器,其核心特性包括:
- 以 “键 - 值对” 形式存储数据,键与值一一对应;
- 键必须是不可变类型(如字符串、数字、元组),且唯一(重复的键会被覆盖);
- 值可以是任意数据类型(包括列表、字典等);
- 在 Python 3.7+ 中,字典保留插入顺序(此前版本无序);
- 支持动态修改(添加、删除、更新键值对)。
字典用花括号 {}
定义,键与值之间用冒号 :
分隔,键值对之间用逗号 ,
分隔。常见创建方式如下:
1.直接赋值创建
# 空字典
empty_dict = {}
# 基本字典(字符串键)
person = {"name": "Alice", "age": 25, "is_student": False}
# 数字键与混合值类型
data = {1: "one", 2: [3, 4], 3: {"a": 5}}
# 元组作为键(元组是不可变类型)
tuple_key_dict = {(1, 2): "坐标", (3, 4): "位置"
2.通过 dict()
函数创建
# 键值对参数
animal = dict(name="dog", legs=4, sound="woof")
# 列表/元组的可迭代对象(元素为键值对)
fruit = dict([("name", "apple"), ("color", "red")])
# 从已有字典创建(浅拷贝)
person_copy = dict(person)
3.字典推导式创建类似列表推导式,通过表达式快速生成字典
# 生成键为1-5、值为键平方的字典
square_dict = {x: x**2 for x in range(1, 6)}
# 过滤键值对
filtered_dict = {k: v for k, v in square_dict.items() if v > 10}
字典通过键访问对应的值,而非索引。常用方式如下:
1.直接通过键访问
语法:字典名[键]
。若键不存在,会抛出 KeyError
。
person = {"name": "Alice", "age": 25}
print(person["name"])
print(person["age"])
# print(person["gender"])
2.通过 get()
方法访问
语法:字典名.get(键, 默认值)
。若键不存在,返回指定的默认值(默认值可选,不指定则返回 None
),避免报错。
print(person.get("name"))
print(person.get("gender", "未知"))
3.获取所有键、值或键值对
keys()
:返回所有键的视图(可迭代对象);
values()
:返回所有值的视图;
items()
:返回所有键值对的视图(每个元素为(键, 值)
元组)。
person = {"name": "Alice", "age": 25}
print(list(person.keys()))
print(list(person.values()))
print(list(person.items()))
字典是可变的,支持动态修改键值对:
1.添加 / 更新键值对
直接通过键赋值:若键不存在,则添加新键值对;若键已存在,则更新对应的值。
person = {"name": "Alice", "age": 25}
# 添加新键值对
person["gender"] = "female"
print(person)
# 更新已有键的值
person["age"] = 26
print(person)
2.通过 update()
方法批量更新
语法:字典名.update(其他字典/可迭代对象)
,可批量添加或更新键值对。
person = {"name": "Alice"}
# 传入其他字典
person.update({"age": 25, "city": "Beijing"})
print(person)
# 传入键值对参数
person.update(age=26, email="[email protected]")
print(person)
3.删除键值对
常用方式有三种:
del 字典名[键]
:删除指定键值对,若键不存在则报错;
pop(键, 默认值)
:删除指定键值对并返回对应的值,键不存在时返回默认值(避免报错);
clear()
:清空字典中所有键值对(字典变为空)。
person = {"name": "Alice", "age": 25, "city": "Beijing"}
# del 删除
del person["city"]
print(person)
# pop() 删除并返回值
age = person.pop("age")
print(age)
print(person)
# pop() 处理不存在的键
gender = person.pop("gender", "未知")
print(gender)
# clear() 清空
person.clear()
print(person)
1.判断键是否存在
用 in
或 not in
运算符:
person = {"name": "Alice", "age": 25}
print("name" in person)
print("gender" not in person)
2.获取字典长度
用 len()
函数返回键值对的数量:
person = {"name": "Alice", "age": 25}
print("name" in person)
print("gender" not in person)
print(len(person))
3.嵌套字典的访问
字典的值可以是另一个字典,通过多级键访问:
# 嵌套字典(学生信息,包含课程成绩)
student = {
"name": "Bob",
"scores": {
"math": 90,
"english": 85
}
}
# 访问嵌套字典的值
print(student["scores"]["math"])
# 修改嵌套字典的值
student["scores"]["english"] = 88
print(student["scores"]["english"])
Dict 常用方法:
update({ }) | 将字典合并到另一个字典 |
pop(k) | 删除指定键 k 对应的键值对,并返回该键所对应的值 |
popitem() | 随机删除并返回一个键值对 |
clear() | 清空字典所有键值对的 |
keys() | 获取字典所有键的视图 |
values() | 获取字典所有值的视图 |
get() | 安全获取指定键对应值 |
items() | 获取字典所有键值对(key-value pairs)的视图 |
字典的 “键值对” 特性使其在以下场景中尤为实用:
如用户信息、商品信息等,通过唯一键(如 “姓名”“价格”)快速访问属性值:
# 商品信息字典
product = {
"id": "p001",
"name": "笔记本电脑",
"price": 5999,
"spec": {"cpu": "i7", "memory": "16G"}
}
# 快速获取商品价格
print(f"商品价格:{product['price']}元")
利用字典键的唯一性,统计元素出现次数:
# 统计列表中各元素的出现次数
words = ["apple", "banana", "apple", "orange", "banana", "apple"]
count_dict = {}
for word in words:
if word in count_dict:
count_dict[word] += 1
else:
count_dict[word] = 1
print(count_dict)
程序配置参数(如数据库连接信息)常用字典存储,便于集中管理和修改:
# 数据库配置
db_config = {
"host": "localhost",
"port": 3306,
"user": "root",
"password": "123456",
"database": "test_db"
}
# 使用配置连接数据库(伪代码)
# connect(host=db_config["host"], port=db_config["port"], ...)
如将代码与含义映射(如状态码与描述),快速查询对应关系:
# HTTP状态码映射
status_codes = {
200: "请求成功",
404: "资源不存在",
500: "服务器内部错误"
}
print(status_codes.get(404))
字典作为 Python 中最灵活的映射型数据结构,通过 “键 - 值对” 实现了高效的数据存储与访问。其核心操作包括创建字典、访问值(通过键或 get()
方法)、修改键值对(添加、更新、删除),以及处理嵌套字典等。
字典的优势在于基于键的快速查找和动态扩展性,使其在存储对象属性、数据统计、配置管理等场景中不可或缺。在使用时,需注意键的不可变性和唯一性,合理选择 []
访问(简洁)或 get()
方法(安全),并灵活运用字典推导式简化代码。
掌握字典的操作,能显著提升数据处理效率,为编写更简洁、高效的 Python 程序奠定基础。希望通过本文的学习,你能熟练运用字典解决实际编程问题