news 2026/9/11 19:20:33

Python中的字典(Dictionary)是其最强大且灵活的内建数据结构之一

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python中的字典(Dictionary)是其最强大且灵活的内建数据结构之一

Python中的字典(Dictionary)是其最强大且灵活的内建数据结构之一。它通过“键值对”的形式存储数据,允许我们通过一个唯一的“键”来快速访问对应的“值”。这种结构在计算机科学中通常被称为“关联数组”或“哈希表”。

本文将深入探讨Python字典的键值操作,涵盖从基础创建、增删改查,到高级的遍历、推导式以及性能优化等方方面面,并提供详尽的代码示例。

📖 字典基础与创建

字典的每个键值对用冒号:分割,每个键值对之间用逗号,分割,整个字典包括在花括号{}中。

基本语法
# 创建一个空字典my_dict={}# 创建一个包含初始数据的字典student={"name":"张三","age":20,"major":"计算机科学"}print(student)# 输出: {'name': '张三', 'age': 20, 'major': '计算机科学'}
键的特性

字典的键必须是唯一的,并且必须是不可变类型(如字符串、数字、元组)。值可以是任何数据类型,并且可以重复。

# 键重复的情况duplicate_key_dict={"name":"李四","name":"王五"}print(duplicate_key_dict)# 输出: {'name': '王五'} (后面的值会覆盖前面的值)# 使用元组作为键tuple_key_dict={(1,2):"坐标点"}print(tuple_key_dict)# 输出: {(1, 2): '坐标点'}

🛠️ 核心操作:增、删、改、查

对字典的操作主要围绕键值对进行。

添加与修改

添加新键值对和修改现有键值对的语法是完全一样的,都是使用dict[key] = value的形式。如果键不存在,则添加;如果键已存在,则修改其对应的值。

info={"name":"张三","age":25}# 添加新的键值对info["city"]="北京"print(f"添加后:{info}")# 输出: 添加后: {'name': '张三', 'age': 25, 'city': '北京'}# 修改已存在的键的值info["age"]=26print(f"修改后:{info}")# 输出: 修改后: {'name': '张三', 'age': 26, 'city': '北京'}
批量更新

update()方法可以用来将一个字典的键值对批量添加到另一个字典中。如果键已存在,则会更新其值。

dict1={"a":1,"b":2}dict2={"b":3,"c":4}dict1.update(dict2)print(dict1)# 输出: {'a': 1, 'b': 3, 'c': 4}
查询

获取字典元素时,不能使用索引,必须使用键。

  1. 使用**[]**操作符
    这是最直接的方式,但如果键不存在,会抛出KeyError异常。
  2. 使用**get()**方法
    get(key, default_value)方法更安全。如果键存在,返回其值;如果键不存在,则返回default_value(如果未提供,则返回None)。
删除

有多种方式可以从字典中删除键值对。

  1. **del**语句
    直接删除指定的键值对。
  2. **pop(key)**方法
    删除指定的键,并返回其对应的值。如果键不存在,会抛出KeyError
  3. **popitem()**方法
    删除并返回字典中的最后一个键值对(在Python 3.7+中,字典是有序的,所以会删除最后插入的项)。
  4. **clear()**方法
    清空字典中的所有元素。

🔄 遍历字典

遍历字典是日常开发中的常见操作,Python提供了三种主要方法。

  1. 遍历键
    直接对字典进行for循环,默认遍历的是所有的键。keys()方法可以显式地返回所有键。
  2. 遍历值
    使用values()方法可以遍历字典中所有的值。
  3. 遍历键值对
    使用items()方法可以同时获取键和值。它返回一个包含(键, 值)元组的可迭代对象。

✨ 高级特性:字典推导式

字典推导式是一种从其他可迭代对象快速、简洁地创建字典的强大语法。它的结构与列表推导式类似。

基本语法

{key_expression: value_expression for item in iterable}

示例:从列表创建字典
# 将列表中的数字作为键,其平方作为值numbers=[1,2,3,4,5]squared_dict={num:num**2fornuminnumbers}print(squared_dict)# 输出: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
带条件的字典推导式

可以在推导式中加入if条件进行过滤。

# 只将奇数及其平方存入字典numbers=[1,2,3,4,5]odd_squared_dict={num:num**2fornuminnumbersifnum%2!=0}print(odd_squared_dict)# 输出: {1: 1, 3: 9, 5: 25}
转换现有字典

字典推导式也可以用来处理或过滤现有的字典。

original_dict={'a':1,'b':2,'c':3,'d':4}# 创建一个新字典,只包含值大于2的项filtered_dict={k:vfork,vinoriginal_dict.items()ifv>2}print(filtered_dict)# 输出: {'c': 3, 'd': 4}

📌 总结

Python字典通过其高效的键值对存储和访问机制,成为了处理结构化数据的利器。掌握其核心的增删改查操作、灵活的遍历方法以及强大的字典推导式,将极大地提升你的编程效率和代码的优雅性。无论是在数据存储、配置管理还是算法实现中,字典都扮演着不可或缺的角色。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 19:19:58

OpenProject 项目健康度仪表盘实操指南

OpenProject 项目健康度仪表盘实操指南 【免费下载链接】openproject OpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Ga…

作者头像 李华
网站建设 2026/9/11 19:16:21

YOLO11导出ONNX完整指南:参数选择与常见错误排查

做目标检测落地的人应该都有体会:模型在 PyTorch 里跑得再好,也只是“实验室里能跑”,真正要到生产环境、嵌入式设备、别的框架里去用,就得先把权重“翻译”成一种大家都能读懂的格式。YOLO11 出来后,我把训练好的模型…

作者头像 李华
网站建设 2026/9/11 19:15:51

SpringBoot高校社团管理系统设计与优化实践

1. 项目背景与核心需求高校社团管理一直是校园信息化建设中的痛点领域。传统纸质登记、Excel表格管理的方式存在信息孤岛、流程繁琐、数据易丢失等问题。我在参与某211高校信息化改造项目时,校方明确提出需要一套能够实现以下核心功能的系统:社团全生命周…

作者头像 李华
网站建设 2026/9/11 19:14:44

Backstage Bitbucket Cloud 集成与 Catalog Location 配置完全指南

Backstage Bitbucket Cloud 集成与 Catalog Location 配置完全指南 【免费下载链接】backstage Backstage is an open framework for building developer portals 项目地址: https://gitcode.com/GitHub_Trending/ba/backstage 本篇技术指南围绕 Backstage 中 Bitbucket…

作者头像 李华
网站建设 2026/9/11 19:10:15

如何用 Packer 构建 DigitalOcean 快照并发布 Appsmith One-Click 新版本

如何用 Packer 构建 DigitalOcean 快照并发布 Appsmith One-Click 新版本 【免费下载链接】appsmith Platform to build admin panels, internal tools, and dashboards. Integrates with 25 databases and any API. 项目地址: https://gitcode.com/GitHub_Trending/ap/appsm…

作者头像 李华