【深入浅出 】——【Python 字典】——【详解】

news2024/11/18 1:31:41

目录

1. 什么是 Python 字典?

1.1 字典的基本概念

1.2 字典的用途

1.3 字典的优势

2. 字典的基本特点

2.1 键的唯一性

2.2 可变性

2.3 无序性

3. 如何创建字典?

3.1 使用 {} 符号

3.2 使用 dict() 工厂方法

3.3 使用 fromkeys() 方法

4. 字典的键和值的类型可以不同

注意事项:

5. 如何访问字典中的元素?

注意事项:

6. 遍历字典

注意事项:

7. 修改字典中的元素

7.1 新增元素

7.2 修改元素

注意事项:

8. 删除字典中的元素

8.1 使用 del 删除某个键值对

8.2 使用 clear() 方法清空整个字典

8.3 使用 pop() 函数删除键值对并获取到对应的值

注意事项:

9. 查找元素是否在字典中

注意事项:

10. 字典的比较

总结


 

专栏:python学习笔记 

Python 字典是一种强大而灵活的数据结构,非常适合存储和管理键值对。

1. 什么是 Python 字典?

Python 字典是一种映射类型的数据结构,其中的数据以键值对(key-value pairs)的形式存储。字典的实现基于哈希表,使得键值对的查找和操作速度非常快。

1.1 字典的基本概念

  • 键(Key): 键必须是唯一的,并且是可哈希的(如整数、字符串、元组等不可变类型)。这意味着两个不同的键不能具有相同的哈希值。
  • 值(Value): 值可以是任意类型,包括数字、字符串、列表、甚至是另一个字典。

小李很执着理解: 想象字典是一种超级便利的“查找表”,你可以通过独一无二的“名字”(键)快速找到对应的“内容”(值)。

1.2 字典的用途

字典在很多场景下都非常有用,例如:

  • 配置文件: 存储应用程序的配置参数。
  • 计数器: 统计元素出现的频率。
  • 缓存: 存储计算结果以避免重复计算。
  • 快速查找: 通过键快速访问数据。

1.3 字典的优势

  • 查找速度快: 由于字典基于哈希表实现,查找操作的平均时间复杂度为 O(1)。
  • 灵活性高: 字典的键和值可以是任意类型,提供了极大的灵活性。

2. 字典的基本特点

字典有几个重要的特点,使其在各种应用场景中非常有用。

2.1 键的唯一性

字典中的每个键必须是唯一的。如果试图插入一个重复的键,后者会覆盖前者。

a = {'x': 1, 'y': 2}
a['x'] = 3
print(a)
# 输出: {'x': 3, 'y': 2}

小李很执着理解: 字典就像一份购物清单,每个项目都有独特的名字,如果名字重复,新的会替换旧的。

2.2 可变性

字典是可变的,这意味着可以动态地增加、修改和删除键值对。

a = {'x': 1}
a['y'] = 2
print(a)
# 输出: {'x': 1, 'y': 2}

小李很执着理解: 你可以随时往购物清单里添加或删除项目。

2.3 无序性

在 Python 3.7 之前,字典中的元素没有顺序。从 Python 3.7 开始,字典按插入顺序保存键值对。

a = {'x': 1, 'y': 2, 'z': 3}
print(a)
# 输出: {'x': 1, 'y': 2, 'z': 3}

小李很执着理解: 虽然购物清单里项目的顺序不重要,但从 Python 3.7 开始,它会记住你添加项目的顺序。

3. 如何创建字典?

Python 提供了多种方式来创建字典:

3.1 使用 {} 符号

这是最常用的创建字典的方法:

a = {'x': 1, 'y': 2}
print(a)
# 输出: {'x': 1, 'y': 2}

小李很执着理解: 用大括号 {} 包裹一对对的名字和值,就能创建一个字典。

3.2 使用 dict() 工厂方法

适用于从其他数据结构(如元组列表)创建字典的情况:

a = dict([('x', 1), ('y', 2)])
print(a)
# 输出: {'x': 1, 'y': 2}

小李很执着理解: dict() 函数也能创建字典,只要提供成对的名字和值。

3.3 使用 fromkeys() 方法

用于创建包含指定键并且所有值相同的字典:

a = {}.fromkeys(('x', 'y'), 0)
print(a)
# 输出: {'x': 0, 'y': 0}

小李很执着理解: fromkeys() 方法创建的字典里所有的名字都有相同的值。

4. 字典的键和值的类型可以不同

在字典中,键和值的类型不需要相同。例如,可以有整数键和字符串值的组合:

a = {1: 'apple', 'b': 2.5}
print(a)
# 输出: {1: 'apple', 'b': 2.5}

注意事项:

  • 键必须是不可变类型(如整数、字符串、元组)。
  • 值可以是任何类型,包括列表和其他字典。

小李很执着理解: 字典里的名字和内容可以是任何类型,比如数字对应水果,字母对应小数。

5. 如何访问字典中的元素?

使用方括号 [] 可以直接访问字典中的值:

a = {'x': 10, 'y': 20}
print(a['x'])  # 输出: 10

注意事项:

  • 访问不存在的键会抛出 KeyError 错误。

可以使用 get() 方法避免 KeyError

value = a.get('z', '默认值')
print(value)  # 输出: 默认值

小李很执着理解: 用名字查找内容就像查字典,用 get() 方法可以避免找不到名字时报错。

6. 遍历字典

可以使用 for 循环遍历字典中的键和值:

a = {'x': 0, 'y': 0}
for key in a:
    print(key, a[key])
# 输出(顺序可能不同):
# x 0
# y 0

注意事项:

可以使用 items() 方法同时遍历键和值:

for key, value in a.items():
    print(key, value)

小李很执着理解: for 循环可以遍历字典里的所有名字和内容,用 items() 方法可以同时获取名字和内容。

7. 修改字典中的元素

使用方括号 [] 可以新增或修改字典元素:

7.1 新增元素

a = {}
a[1] = 100
print(a)  # 输出: {1: 100}

小李很执着理解: 用方括号 [] 给字典增加新元素。

7.2 修改元素

a[1] = 200
print(a)  # 输出: {1: 200}

注意事项:

使用 update() 方法可以批量更新字典:

a.update({'b': 300, 'c': 400})
print(a)  # 输出: {1: 200, 'b': 300, 'c': 400}

小李很执着理解: 用方括号 [] 修改字典里的内容,用 update() 方法一次更新多个内容。

8. 删除字典中的元素

8.1 使用 del 删除某个键值对

a = {1: 100}
del a[1]
print(a)  # 输出: {}

8.2 使用 clear() 方法清空整个字典

a = {1: 100, 2: 200}
a.clear()
print(a)  # 输出: {}

8.3 使用 pop() 函数删除键值对并获取到对应的值

a = {1: 100, 2: 200}
value = a.pop(1)
print(value)  # 输出: 100
print(a)      # 输出: {2: 200}

注意事项:

popitem() 方法可以删除并返回最后一个键值对(按插入顺序):

a = {1: 100, 2: 200}
key, value = a.popitem()
print(key, value)  # 输出: 2 200
print(a)           # 输出: {1: 100}

小李很执着理解: del 删除单个元素,用 clear() 清空字典,用 pop() 删除并获取元素内容。

9. 查找元素是否在字典中

可以使用 innot in 来判定一个键是否在字典中:

a = {'x': 10, 'y': 20}
print('x' in a)  # 输出: True
print('z' in a)  # 输出: False

注意事项:

  • in 操作符只检查键是否存在,不检查值。

小李很执着理解: in 判断字典里是否有某个名字。

10. 字典的比较

字典的比较操作符与序列不同。两个字典只有在键和值完全相同时才相等:

a = {'x': 1, 'y': 2}
b = {'x': 1, 'y': 2}
print(a == b)  # 输出: True

  • 注意事项:
    • 字典之间的大小关系不常用,因为字典是无序的。
    • 可以使用 ==!= 来比较字典。

小李很执着理解: == 比较字典是否相等,字典的大小关系通常不需要比较。

总结

Python 字典是一种非常灵活且高效的数据结构,适用于需要快速查找和存储键值对的场景。字典的强大功能使其成为 Python 编程中不可或缺的一部分。掌握字典的使用,可以大大提高代码的效率和可读性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1882670.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

js修改scss变量

style.scss $color : var(--color,#ccc); // 默认值 #ccc .color{background: $color; } 定义了一个scss变量($color),用普通的css变量(--color)给他赋值,这里需要一个默认值,此时css变量(--co…

线性图标设计

创建图标区域 按键A,创建一个24x24的背景。 图标绘制包含几个点 矢量图形绘制:箭头、圆、三角...... 绘制箭头和矩形 1.下载图标 双击矩形选中要删除的点 调整一下即可得到下载的图标。 2.时间图标 按快捷键O画个圆,L加两条线变成一个时钟…

Spire.PDF for .NET【文档操作】演示:在 PDF 中创建目录 (TOC)

目录在增强文档的可读性和可导航性方面起着至关重要的作用。它为读者提供了文档结构的清晰概述,使他们能够快速找到并访问他们感兴趣的特定部分或信息。这对于较长的文档(例如报告、书籍或学术论文)尤其有价值,因为读者可能需要多…

Games101学习笔记 Lecture 15: Ray Tracing 3 (Light Transport Global Illumination)

Lecture 15: Ray Tracing 3 (Light Transport & Global Illumination 一、BRDF 双向反射分布函数定义 二、反射方程 Reflection Equation三、渲染方程1.重写反射方程2.当其他的点反射的radiance作为入射 一、BRDF 双向反射分布函数 定义 计算不同的反射方向上会分布多少能…

选哪个短剧系统源码好:全面评估与决策指南

在短剧内容创作和分享日益流行的今天,选择合适的短剧系统源码对于构建一个成功的短剧平台至关重要。短剧系统源码不仅关系到平台的稳定性和用户体验,还直接影响到内容创作者和观众的互动质量。本文将提供一份全面的评估指南,帮助您在众多短剧…

道可云AI智能体平台全新升级,加快培育发展新质生产力

数字化时代浪潮下,以人工智能为代表的新一代信息技术正在加速推动社会变革,给各行各业带来巨大发展机遇。在AI技术的加持下,“人工智能”成为时代发展趋势,也是加快培育和发展新质生产力的新动能。 为培育数字经济发展新动能&…

【C语言】C语言 4 个编译过程详解

C语言的编译过程涉及几个关键步骤、概念和细节,每个步骤都有助于将人类可读的源代码转换为可执行的机器码。以下是详细的解释和示例: 一、什么是编译? 编译是将源代码转换为目标代码的过程。它是在编译器的帮助下完成的。编译器检查源代码是…

数据分析与挖掘案例-电子商务网站用户行为分析及服务推荐

数据分析与挖掘案例-电子商务网站用户行为分析及服务推荐 文章目录 数据分析与挖掘案例-电子商务网站用户行为分析及服务推荐1. 背景与挖掘目标2. 分析方法与过程2.1 分析步骤与流程2.2 数据抽取2.3 数据探索分析1. 分析网页类型2. 分析网页点击次数 2.4 数据预处理1. 删除不符…

vision mamba-yolov8:结合Vmamba的yolov8目标检测改进实现

1.vision mamba结构与原理 Mamba成功的关键在于S6模型,该模型为NLP任务设计,通过选择性扫描空间状态序列模型,将二次复杂度降低至线性。但由于视觉信号(如图像)的无序性,Mamba的S6模型不能直接应用&#xf…

Python基础之多进程

文章目录 1 多进程1.1 简介1.2 Linux下多进程1.3 multiprocessing1.4 Pool1.5 进程间通信1.6 分布式进程 1 多进程 1.1 简介 要让Python程序实现多进程(multiprocessing),我们先了解操作系统的相关知识。 Unix/Linux操作系统提供了一个fork…

【Unity小技巧】Unity字典序列化

字典序列化 在 Unity 中&#xff0c;标准的 C# 字典&#xff08;Dictionary<TKey, TValue>&#xff09;是不能直接序列化的&#xff0c;因为 Unity 的序列化系统不支持非 Unity 序列化的集合类型。可以通过手写字典实现 效果&#xff1a; 实现步骤&#xff1a; 继承ISe…

Python从0到100(三十三):xpath和lxml类库

1. 为什么要学习xpath和lxml lxml是一款高性能的 Python HTML/XML 解析器&#xff0c;我们可以利用XPath&#xff0c;来快速的定位特定元素以及获取节点信息 2. 什么是xpath XPath&#xff0c;全称为XML Path Language&#xff0c;是一种用于在XML文档中进行导航和数据提取的…

看不懂懂车大爆炸,你就错过了国产小车的王炸!

咦&#xff1f;咋的啦&#xff1f;咱中国自己的汽车品牌前几天在汽车工业协会公布的数据里一跃而起&#xff0c;真的是威风凛凛啊&#xff01;2023年咱们自家的乘用车品牌市场份额硬生生地占了个56%&#xff0c;这可是半壁江山啊&#xff01;特别是那些10万块钱以下的家用小车&…

K-Planes代码记录

随记 原文 K-Planes: Explicit Radiance Fields in Space, Time, and Appearance&#xff0c;又要换baseline&#xff0c;可是效果不好能怎么办呢&#xff0c;我可不可以发疯。k-planes的代码又是非常工程琐碎的&#xff0c;大佬的代码果然不顾小白死活。随便记录下整个过程。…

造一个交互式3D火山数据可视化

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 使用 Plotly.js 创建交互式 3D 火山数据可视化 应用场景 本代码用于将火山数据库中的数据可视化&#xff0c;展示火山的高度、类型和状态。可用于地质学研究、教育和数据探索。 基本功能 该代码使用 Plotly…

【面试系列】信息安全分析师高频面试题及详细解答

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&#xff1a;详细讲解AIGC的概念、核心技术、…

基于TCP/QT/C++的网盘系统测试报告

目录 一、项目介绍 1、项目描述 2、项目组成模块 3、项目技术要点 二、用户功能测试 1、查看在线用户测试 1.1、运行服务器 1.2、登录两个账号 1.3、点击显示在线用户&#xff0c;可以看到jack和lucy 2、搜索用户测试 2.1、打开服务器&#xff0c;登录两个账号jack,lucy 2.2、在…

强化学习的数学原理:贝尔曼公式

大纲 这一节课程的大纲&#xff1a; 重点 对于这次课&#xff0c;重点是两个东西&#xff1a; Motivating examples(为什么需要贝尔曼公式) 首先要明白&#xff0c;为什么 return 是重要的&#xff1f; 之前其实就说过&#xff0c;return 能够帮助我们评价一个策略是好还是坏…

哪个牌子的超声波清洗器好?精选四大超强超声波清洗机力荐

生活中戴眼镜的人群不在少数&#xff0c;然而要维持眼镜的干净却不得不每次都需要清洗&#xff0c;只是通过手洗的方式实在太慢并且容易操作不当让镜片磨损更加严重&#xff01;所以超声波清洗机就诞生了&#xff01;超声波清洗机能够轻松清洗机眼镜上面的油脂污渍&#xff0c;…

Kubernetes的发展历程:从Google内部项目到云原生计算的基石

目录 一、起源与背景 1.1 Google的内部项目 1.2 Omega的出现 二、Kubernetes的诞生 2.1 开源的决策 2.2 初期发布 三、Kubernetes的发展历程 3.1 社区的成长 3.2 生态系统的壮大 3.3 重大版本和功能 3.4 多云和混合云的支持 四、Kubernetes的核心概念 4.1 Pod 4.…