(Python基础篇)字典的操作

一、引言

在 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 程序奠定基础。希望通过本文的学习,你能熟练运用字典解决实际编程问题

你可能感兴趣的:(基础篇,python,开发语言)