课时15:字典的介绍

简介: 字典是一种映射数据结构,与列表不同,它通过键值对存储对象,查询效率更高。字典的每个元素由唯一键(Key)和对应的值(Value)组成,称为键值对。键必须是不可变对象(如字符串、数字),且不能重复。字典适合快速查找特定信息,而列表则按索引访问元素,查询性能较低。以下是创建字典及获取值的示例代码:字典提供了一种高效、灵活的方式来组织和访问数据。

字典的简介

 

摘要

1、字典的定义

2、字典与列表的不同

3、字典的组成

4、举例代码

 

01.字典的定义

 

1.1字典的定义

字典不是序列,是一种新的结构。字典属于一种新的数据结构,称为映射( Mapping  )

字典的作用和列表类似,都是用来存储对象的容器

 

02.字典与列表的不同

 

2.1字典与列表的不同

序列是往列表里面存多个对像、多个数据。同样,在字典里也可以存多个数据。

不同之处在于列表存储数据的性能很好,但是查询数据的性能的很差。

例如:在列表里存储一万个员工信息,这些信息按照一定固定的顺序在列表中保存,这时需要从这个列表调出一个某位员工信息

有两种方式

l 明确知道该员工的编号或者索引,可以通过该员工编号或者索引快速找出该员工信息

l 如果不知道该员工的编号或者索引的话,就需要把列表里的元素得一个一个的列出来,再然后去一个一个的找出该员工信息编号。

所以序列在需要快速查找信息时性能较差。

序列就像一本没有目录只有页码的书,序列只能通过索引来操作元素。

在字典中每一个元素都有一个唯一的名字,通过这个唯一的名字可以快速的查找到指定的元素,这里的名字和索引意思大致相同。在查询元素时,字典的效率是非常快的

 

03.字典的组成

 

3.1字典的组成

在字典中可以保存多个对象,每个对象都会有一个唯一的名字。

这个唯一的名字,称其为键(Key),通过 Key 可以快速的查询Value

这个对象,称其为值(Value) 

所以字典,也称为叫做键值对(Key-value)结构每个字典中都可以有多个键值对,而每一个键值对称其为一项( Item)

 

04.举例代码

 

4.1创建代码

接下写一个代码,如下:

Code 里创建一个文件

# 字典
# 使用 { } 来创建字典
d={ }  #创建了一个空字典,里面一项都没有
print(d ,type(d))

接下来执行,如图:

image.png

 

4.2语法结构

接下来向字典里添加项,如下:

#创建一个包含有数据的字典
#语法:
#{key:value,key:value,key:value}  等于给每一个元素加了一个Key 名字
d={‘name’:‘孙悟空’}

这里写的时候不像列表 d={1,2,3}这样,但是在字典里有键值对结构,所以语法如下所示

#语法:

#{key:value,key:value,key:value}  等于给每一个元素加了一个Key 名字

d={‘name’:‘孙悟空’}

这时keyname,而值value叫“孙悟空“。执行后如图:

image.png

接下来继续添加,如下:

d={‘name’:‘孙悟空’,‘age’:18,‘gender’:‘男’}

紧接着再执行,如下图:

image.png

#字典的值可以是任意对象

#字典的键可以是任意的不可变对象(int、str、bool、tuple…),像List 这样的可变对象就不可以。但是一般都会使用 Str ,很少用到别的类型,但不排除特殊情况。

 

4.3 字典的键不能重复

#字典的键是不能重复的,如果出现重复的后面的会替换前面的。

d={‘name’: ‘孙悟空’,‘age’:18,‘gender’:‘男’,‘name’:‘sunwukong ’}

执行后如图:

image.png

这里会发现 Name 重复了,后面的“sunwukong”会替换到前面的孙悟空

紧接着,这种写法格式不太清楚,可以将每一个项单独放到一行。如下:

d={
‘name’: ‘孙悟空’,
‘age’:18,
‘gender’:‘男’,
‘name’:’sunwukong ’
}

像这种中括号是可以跨行的。再次执行如下图:

image.png

和上述写法执行后效果是一样的。

 

4.4获取字典里的值

操作方式和列表一样,只不过列表里用索引,字典里面用的键。

#需要根据键来获取值
print(d['name'])

执行后如图:

image.png

print(d[' age '])

保存后执行如图:

image.png

想要全部信息的话,可以像如下方形式写,保存后执行如图:

print(d['name'],d[' age '], d[' gender '])

image.png

这样就完成了,字典里面用名字获取信息,列表里用索引。因为在字典里名字具有意义,如 NameAgeGender 是具备意义的,就像一个目录,查询起来比较快。但是索引是没有意义的,就像页码一样。列表中没有序号是没有意义的

接下来还有一种情况,字典里没有该信息时,执行后查询后会报错,如下:

print(d[' hello '])

image.png

#如果使用了字典中不存在的键,会报错。

print(d[' hello ']) Key Error: ‘hello’


相关文章
|
数据可视化 中间件 API
FreeRTOS记录(一、熟悉开发环境以及CubeMX下FreeRTOS配置)
熟悉 在 STM32 CubeMX 下面的 FreeRTOS 使用
3669 1
FreeRTOS记录(一、熟悉开发环境以及CubeMX下FreeRTOS配置)
|
2月前
|
数据采集 JavaScript API
淘宝商品评论API实战:从数据获取到情感分析
淘宝商品评论API是开放平台提供的核心接口,支持获取文字、评分、多媒体等评论数据,具备实时性强、分类筛选、批量查询等特点,助力电商数据分析与用户行为研究,提升产品优化与服务质量。(238字)
|
11月前
|
人工智能 智能设计 图计算
金鸡电影节创投大会AI短片《天线》:构建基于现实世界的想象空间
金鸡电影节创投大会AI短片《天线》:构建基于现实世界的想象空间
|
6月前
|
存储 数据管理 数据库
数据字典是什么?和数据库、数据仓库有什么关系?
在数据处理中,你是否常困惑于字段含义、指标计算或数据来源?数据字典正是解答这些问题的关键工具,它清晰定义数据的名称、类型、来源、计算方式等,服务于开发者、分析师和数据管理者。本文详解数据字典的定义、组成及其与数据库、数据仓库的关系,助你夯实数据基础。
数据字典是什么?和数据库、数据仓库有什么关系?
|
8月前
|
数据采集 机器学习/深度学习 Web App开发
Python爬虫如何应对贝壳网的IP封禁与人机验证?
Python爬虫如何应对贝壳网的IP封禁与人机验证?
|
负载均衡 网络虚拟化
【专栏】生成树协议(STP),用于消除网络环路并确保单向通信路径,提高可靠性和避免循环是至关重要的
【4月更文挑战第28天】本文详细介绍了生成树协议(STP),用于消除网络环路并确保单向通信路径。STP基于IEEE 802.1D,涉及根桥选举、端口角色分配及构建无环路径。高级特性包括快速STP(RSTP)的快速收敛、多实例STP(MSTP)的负载均衡和容错,以及各种保护机制。文章还讨论了实际案例和故障排除,为网络工程师提供STP的全面理解与应用指南。
987 1
|
11月前
|
索引
课时13:可变对象
可变对象是指其值可以在创建后被修改的对象。每个对象包含三个属性:Id(标识)、Type(类型)和Value(值)。其中,只有Value是可变的。例如,列表是典型的可变对象,可以通过索引修改其元素。通过代码演示和图示,本文详细解释了如何区分修改对象与修改变量的区别及其影响。修改对象时,所有指向该对象的变量都会受到影响;而修改变量则仅影响该变量本身,不会影响其他变量。总结来说,赋值操作通常修改变量,而通过索引或方法修改内容的操作则修改对象。
|
Shell Windows
电脑文件打开缓慢、右键卡顿解决方案
本文汇总了几种解决电脑文件打开缓慢和右键点击文件夹卡顿问题的方案,包括重启资源管理器、修改注册表中的Shell Extensions、以及设置在单独的进程中打开文件夹窗口。
|
JavaScript Java 测试技术
基于SpringBoot+Vue的校园论坛系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的校园论坛系统的详细设计和实现(源码+lw+部署文档+讲解等)
524 0
|
存储 安全 编译器
网络安全之恶意代码
恶意代码是一种有害的计算机代码或 web 脚本,其设计目的是创建系统漏洞,并借以造成后门、安全隐患、信息和数据盗窃、以及其他对文件和计算机系统的潜在破坏。恶意代码不仅使企业和用户蒙受了巨大的经济损失,而且使国家的安全面临着严重威胁。1991年的海湾战争是美国第一次公开在实战中使用恶意代码攻击技术取得重大军事利益,从此恶意代码攻击成为信息战、网络战最重要的入侵手段之一。恶意代码问题无论从政治上、经济上、还是军事上,都成为信息安全面临的首要问题。让我们一起来认识一下恶意代码。
928 1