目录

9.1.1 理解字典类型

9.1.2 字典的类型名

9.1.3 字典的定义

9.1.4 字典的主要性质

9.1.5 好好学习,天天向上


9.1.1 理解字典类型

在日常生活中,我们常常会接触到“字典”这种数据类型,例如一本书籍的目录结构,在目录结构中,通过查找页码,就可以快速翻到指定的页面。

如果没有这样的页码,那么我们必须从书籍的第一页开始,一页一页地查找。有了页码以后,直接翻到指定的页面。在Python中,可以通过字典来进行快速地查找。

Python中的字典类型是用{}符号括住的一个数据集合,集合中的元素以英文逗号进行分隔。

image.png

字典中的元素是一个键值对:

# 定义一个字典变量bookbook = {"第十二章-彻底掌握Python的字典类型": 210}

在上文代码中定义了一个字典类型变量book, book中只有一个元素。元素以英文冒号进行分隔。在冒号左边的为键名,冒号右边的为键值。book中的键名表示书籍的章节目录名称,键值表示章节目录的页码。字典中的键名是唯一的,就如同在一本书籍中,不会出现相同的目录。

字典中的键名是唯一的,在列表和元组中可以保存多个相同的元素值。

9.1.2 字典的类型名

在交互模式中通过type来输出字典的类型名:

>>> book = {"第十二章-彻底掌握Python的字典类型": 210}

>>> type(book)

<class 'dict'>

从输出可知,字典的类型名为dict。

9.1.3 字典的定义

对字典进行定义,主要有对象定义法和直接定义法。

(1) 对象定义法

字典的类型名是dict,可以直接在交互模式中执行help(dict)来查找dict的定义及用法:

class dict(object)

|  dict() -> new empty dictionary

|  dict(mapping) -> new dictionary initialized from a mapping object's

|      (key, value) pairs

|  dict(iterable) -> new dictionary initialized as if via:

|      d = {}

|      for k, v in iterable:

|          d[k] = v

|  dict(**kwargs) -> new dictionary initialized with the name=value pairs

|      in the keyword argument list.  For example:  dict(one=1, two=2)

从交互模式的输出中,可看到如下四个定义字典的构造方法:

(1) dict()

(2) dict(mapping)

(3) dict(iterable)

(4) dict(**kwargs)

1.dict()

使用dict()构造一个空的字典。

代码实例:

# __desc__ = 通过dict()构造一个空的字典 
# 定义一个空的字典
book = dict() # 空值在条件判断中会自动转换为布尔类型Falseif book:  print("book is not empty")
else:  print("book is empty")

2. dict(mapping)

使用mapping对象中的(key, value)键值对来构造一个有值的字典对象。mapping对象是一个从键名到键值的映射对象。在Python中可以通过zip类型构造一个mapping格式的对象,给zip构造方法传递两个可迭代对象,例如:zip(iter1, iter2), 左边的可迭代对象iter1表示的是键名,右边的可迭代对象iter2表示的是键值,iter1中的键名与iter2中的键值一一对应。

代码实例:

# __desc__ = 使用zip类型来定义一个mapping对象 
# zip接受两个可迭代对象
# 元组是一种可迭代对象
# 迄今学过的可迭代对象有字符串,列表,元组mapping = zip(("第十二章-彻底掌握Python的字典类型",), (210,)) 
# 使用mapping对象来构造字典对象
book = dict(mapping)
# book的输出为{"第十二章-彻底掌握Python的字典类型": 210}

Python中的字典类型就是一种标准的mapping对象,我们可以在dict方法中传递一个字典对象来构造字典。

代码实例:

# __desc__ = 使用字典类型来构造一个mapping对象 
pair = {"第十二章-彻底掌握Python的字典类型": 210}
# 使用mapping对象来构造字典对象
book = dict(pair)
# book的输出为{"第十二章-彻底掌握Python的字典类型": 210}

3. dict(iterable)

这里的iterable表示的是可迭代对象,可迭代对象存储了每一个键值对,键值对以列表或元组的形式存储于这个可迭代对象中。可迭代对象既可以是列表,也可以是元组。可迭代对象是列表的情况:

# 1.列表中保存的是列表
[[key, value],[key,value]] 
# 2.列表中保存的是元组
[(key, value),(key,value)]
可迭代对象是元组的情况:# 1.元组中保存的是列表:
([key, value],[key,value]) 
# 2.元组中保存的是元组:
((key, value),(key,value))

代码实例:

# __desc__ = 通过可迭代对象来构造字典 
book = dict([["第十二章-彻底掌握Python的字典类型", 20]])
# book的输出为{"第十二章-彻底掌握Python的字典类型": 210} book = dict((("第十二章-彻底掌握Python的字典类型", 20),))
# book的输出为{"第十二章-彻底掌握Python的字典类型": 210}

4.dict(**kwargs)

这种构造方式是直接采用name=value的关键字参数形式来对字典进行构造,name表示的是键名,value表示的是键值,name必须符合变量名的规则, value必须是Python中的合法数据类型。

代码实例:

# 在dict构造方法中,name=value即表示一个键值对
book = dict(name="108节课彻底学通Python")
# book的输出为{"name": "108节课彻底学通Python"}

(2) 直接定义法

直接定义法是指直接通过字典的别名符号{}来进行定义。在{}中,键值对以英文逗号进行分隔。

代码实例:

# __desc__ = 直接通过{}来构造字典 
# 构造一个空的字典
book = {} # 构造一个有值的字典
book = {"name": "108节课彻底学通Python", "price": 0}

9.1.4 字典的主要性质

字典跟列表一样,都是可变的数据类型。同时字典也是一种可迭代类型,可在for循环中迭代字典的键名。迭代字典对象的for循环结构:

for name in dict:  pass

代码实例:

# __desc__ = 在for循环中迭代字典的键名 
# 构造一个有值的字典
book = {"name": "108节课彻底学通Python", "author": "薯条老师"} 
for name in book:  # 执行dict[name]的语法,可以访问字典的键值  print(name, book[name])

9.1.5 好好学习,天天向上

跟薯条老师学高级爬虫(JS逆向+安卓逆向),数据分析,数据科学,金融量化交易,以及机器学习+深度学习+大模型算法。坚持下去,你一定会成为高手。

薯条老师的学生在南方电网,林氏家居,京东,阿里等大厂。薯条老师的个人技术博客:Python神仙级入门教程-零基础学习数据分析,高级爬虫,机器学习+大模型算法。对本节教程有任何不懂的同学,亦可在评论区中进行评论。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

封禁UDP端口提高防御能力分析

封禁不必要的 UDP 端口 确实可以在一定程度上提高系统的防御力&#xff0c;但这并不是一个绝对的“好”或“坏”的问题&#xff0c;需要根据具体情况来判断。以下是详细分析&#xff1a; ✅ 封禁 UDP 端口能提高防御力的原因 (优点) 减少攻击面&#xff1a; 服务暴露&#xff…

阿里云-arms监控

监控java应用 若是容器集群环境&#xff0c;则选择容器服务环境 手动安装方式&#xff0c;是手动把 agent的jar包放到 ecs服务器&#xff0c;然后运行个人的spring boot服务时&#xff0c;加上一些参数&#xff0c;将agent也启动运行 手动集成-添加agent 监控的是ecs中的java应…

c语言 char *str = ““ 和 char *str = NULL 以及 char str[] = {} 区别

目录 前言char *str "" 和 char *str NULL 区别char *str NULL 和 char str[] {} 区别char *str "" 和 char str[] {} 区别char *str "" 和 const char *str "" 区别 前言 C语言指针的使用非常常见且易出错&#xff0c;这里对…

小程序入门: tab bar 实现多页面快速切换效果

在小程序开发中&#xff0c;tab bar 是实现多页面快速切换的关键组件&#xff0c;能极大提升用户体验。上一篇我们完成了基础配置&#xff0c;今天深入探索&#xff0c;打造更丰富实用的 tab bar 效果。 实现目标 这次要在小程序底部创建包含 “首页”“消息”“联系我们” 三…

Python 数据分析:numpy,抽提,多维切片索引

目录 1 示例代码2 欢迎纠错3 免费爬虫------以下关于 Markdown 编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个…

【向上教育】结构化面试概述.pdf

目 录 第一章 面试须知—面试形式 .......................................................................................................... 1 一、结构化面试 .................................................................................................…

STM32F407控制单个张大头闭环步进电机讲解与梯形加减速(HAL库)

文章目录 硬件连接CubeMX配置**使用TIM5定时器CH3,即PA2作为脉冲控制&#xff0c;PE5控制方向&#xff08;TIM5_CH4是为控制双电机做准备的可以先不配置&#xff09;** 设置占空比为50%,以下为AI讲解重要&#xff01;&#xff01;&#xff01;定时器更新中断脉冲触发原理详解PW…

MongoDB入门学习(含JAVA客户端)

0.序章 致命的面试问题&#xff1a;为什么使用MongoDB&#xff1f; 大型的分布式的文档型数据库&#xff0c;也是NoSQL数据库&#xff08;例如 redis&#xff09; MongoDB适合数据量大而价值又低的这种数据&#xff08;播放进度、评论、弹幕&#xff0c;实时数据的CRUD&…

RedisCache与StringRedisTemplate的深度对比

1. 基本概念 RedisCache ​​定位​​&#xff1a;自定义封装的Redis缓存工具类​​特点​​&#xff1a;通常针对业务场景进行了高层抽象​​典型功能​​&#xff1a; 带过期时间的缓存操作自定义序列化方式业务键前缀管理简化常用操作API StringRedisTemplate ​​定位…

HOOPS Visualize技术详解(二):3D图形系统HOOPS/3DGS的段结构与属性机制

在工业级三维可视化领域中&#xff0c;HOOPS Visualize凭借其高性能和模块化设计被广泛应用于CAD、CAM、仿真、BIM等工程软件中。其中&#xff0c;HOOPS 3D Graphics System&#xff08;简称HOOPS/3DGS&#xff09;是HOOPS Visualize的核心组件&#xff0c;承担着图形场景管理、…

随机化在临床试验中的应用与挑战

一、随机化的核心目的 1.1 控制混杂偏倚 1.1.1 平衡预后因素 确保已知/未知预后因素在组间分布均衡,避免基线不平衡影响结果。 1.1.2 避免选择偏倚 防止研究者或患者主观选择分组,保障组间差异归因于干预。 1.2 保障统计推断有效性 1.2.1 满足独立性假设 满足统计检验…

在C++中#pragma“可选预处理指令的作用“。

文章目录 1. 标准定位&#xff1a;2. 语法形式&#xff1a;3. 常见用途举例4. 为什么用 #pragma&#xff1f;5. 宏里用 __pragma / _Pragma6. 常见误区 在 C/C 里&#xff0c;#pragma 本质上是“可选预处理器指令”&#xff0c;用来告诉编译器在编译某段代码时启用或关闭某些特…

windows系统中docker数据迁移出系统盘

1、关闭docker 2、移动docker数据 找到docker数据目录&#xff0c;一般在C:\Users\61050\AppData\Local\Docker文件&#xff0c;将整个docker目录复制到其他盘&#xff08;例如 D:\Docker&#xff09;&#xff0c;为保证不出错&#xff0c;可以先提前复制一份。 3、创建符号链…

win11电脑突然休眠问题排查

WinR, 输入eventvwr.msc打开事件查看器。找到出现问题的时间点那条数据。会显示原因。首先还是要先排查原因。再去猜测。我因为猜测就直接去了科技市场扫灰加硅来了一个遍。另外还买了散热风扇和金属支架。虽然不知道有没有必要。但是别人是很原因。到头来早上还是发现自动休眠…

安卓开发 lambda表达式

第一步&#xff1a;初学者代码 (没有 Lambda 的“旧”方法) 假设我们有一个简单的需求&#xff1a;执行一个耗时的计算&#xff08;比如网络请求&#xff09;&#xff0c;并在计算完成后&#xff0c;通过一个“回调”来通知我们结果。 1. 定义一个回调接口 这个接口只有一个…

JMeter中变量如何使用?

在性能测试的世界中&#xff0c;Apache JMeter是一把利器&#xff0c;凭借其强大的可扩展性与图形化操作界面&#xff0c;在工业界和开源社区中广受青睐。而“变量的使用”作为JMeter中提高测试灵活性、可维护性和复用性的关键技术点&#xff0c;却常常被初学者忽略或误用。本文…

印度和澳洲的地理因素

研究表明&#xff0c;气温每升高1℃&#xff0c;劳动生产率可能下降1.5%至3%&#xff0c;甚至更多。印度大部分地区夏季高温且湿度较大&#xff0c;有地方60多度&#xff0c;严重限制了劳动效率和农业产出。若印度整体地理位置北移约300公里&#xff0c;平均气温将降低&#xf…

3D Gaussian Splatting

3D高斯溅射&#xff08;3D Gaussian Splatting &#xff09;是一种基于显式三维高斯分布的场景表示与渲染方法。与传统的三维重建技术&#xff08;如多边形网格、点云或隐式神经辐射场NeRF&#xff09;不同&#xff0c;3DGS将场景表示为大量带有属性的3D高斯椭球的集合&#xf…

鸿蒙5:布局组件

注意&#xff1a;博主有个鸿蒙专栏&#xff0c;里面从上到下有关于鸿蒙next的教学文档&#xff0c;大家感兴趣可以学习下 如果大家觉得博主文章写的好的话&#xff0c;可以点下关注&#xff0c;博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…

Flink状态和容错-基础篇

1. 概念 flink的状态和容错绕不开3个概念&#xff0c;state backends和checkpoint、savepoint。本文重心即搞清楚这3部分内容。 容错机制是基于在状态快照的一种恢复方式。但是状态和容错要分开来看。 什么是状态&#xff0c;为什么需要状态&#xff1f; 流计算和批计算在数…