Python如何在循环语句中加入两个变量_【挑战自学Python编程】第七天:字典

ece99f64ccfa2c1125d3082d818659d9.png

摘要:

01 字典的基本概念

02 嵌套

577ec6b239350cefb447fee886461c70.png

01 字典的基本概念

字典与键值对

在讲Python中的字典(Dictionary)之前,我们来回顾一下我们常用的字典有什么特征。

我们可以看到,在上图这样一本日常使用的字典中,每一个字都对应着一个或者多个解释,当你查阅字典时,你会先通过检索(可以是部首检索,可以是拼音检索)找到你所要查的字,然后再看解释。

可能你会觉得有点莫名奇妙,但你在往下看的时候,可以回过头来联想这个例子。

Python中的字典(Dictionary)是什么?

五种标准数据类型(数字,字符串,列表,元组,字典)大家应该都还记得,字典就是其中一种,也是我们学习的最后一种标准的数据类型

表示方式:

{key:value,key:value,key:value} 用中文写就是 {键:值}

示例:

dictionary={'first_name':last,'last_name':leo}

可能有的小伙伴看懂了,有的同学没有看懂,那么我来解释一下。

首先看最外部的符号:

元组的表示使用了圆括号(),列表的表示使用了方括号[ ] ,而字典的表示则是使用花括号{ }扩起,内部元素用逗号隔开。

再来看内部元素:

区别于列表或者元组中那样的单个数据元素,我们可以看到,上述的字典示例中用逗号隔开的元素由三部分组成

key : value 用中文来说就是 键 冒号 值

那么这三部分组成的就是字典中的单个元素,被称为键值对(key-value pair),也称为项。其中,键(key)只能由三种不可修改的数据类型的数据充当,分别是:数字,字符串,元组。而 值(value)则可以由任何的数据类型充当。

怎么来理解键值对?

你要明白键值对这个概念是在字典中出现的,那么现在,请你联想最开始提到的真实生活中的字典。我们现在提到的键(key)就类似与新华字典中的一个个,而值(value)则类似于新华字典中每个字对应的解释

这样来理解,我想你应该明白是什么意思。

577ec6b239350cefb447fee886461c70.png

如何使用

首先,我们得明白一个事实:字典中的元素,顺序是不确定的。

这意味着,我们无法用访问列表时那样的方式,借助索引来访问。

那么如何访问字典中的元素呢?

还是要联想新华字典。当你尝试在新华字典中寻找到某个字的解释的时候,你所干的首先就是找到这个字,同理在Python中也是这样,所以访问字典元素的方式是:字典名[键]。dictionary[key] 。我们来看一个例子:

ef075adf0d5c1eff4193fb43917e4db3.png

可以看到,输出的是50,很明显,这样访问字典元素,所得到的返回值是指定的所对应的值。

接下来,我们试着定义一个字典并打印出来

670ae2cd19bb729607fb9926df8f8cb4.png

可以看到,打印出来的字典包含了所有符号,并不是我们想要的样子

所以接下来,我们用之前所学到的for循环语句,配合关键字in来打印出一份成绩单该有的样子。其本质就是遍历键值对。

我们用变量subject来储存科目名,用变量score来储存分数配合关键字in与循环语句,我们能尝试如下图这样写:

d1030950db6b7626f2cb424d4cbc4496.png

可最后,我们得到的,是错误提示:

ValueError: too many values to unpack (expected 2)

这是为什么呢???

我们来回顾,

for subject,score in scores:

在这一句中,我们尝试一次性将键值对中的键与值分别赋给两个变量,但问题就是,Python在运行时不明白你的意思,为什么会不明白呢?因为Python也可以理解为,你是需要将两个键值对分别赋给两个变量,所以未来避免产生这样的歧义,这样的语法是错误的。


那么我们要如何一次给两个变量赋上两个不同的值呢?

我们先来看一个例子:

50c161a9d0f2a9640dd347bb056549ac.png

可以看到,同样是一次性给两个变量赋两个不同的值,为什么这次就可以呢

???

我来解释一下其中的原理。

Python在见到for x,y in List 这样的语句时,会将List中的一个元素拆成两个值,分别赋给x与y。而要能够这样做得是有条件的,首先,你所指定的范围中的元素是集合类的(也就是像元组这样可以包含其他数据的),其次,这个集合类元素中的数据个数和你给出的变量的数量契合,这样才能完成这样赋值。当然,如果你无法理解我想表达的意思,可以跳过这一段。强行记住下面的做法。

为了使得我们可以遍历字典中的键值对,我们要用到方法items()

items()将会把字典中的每一个键值对用元组的形式储存起来,并将所有的元组以一个列表的形式返回。

见下图:

b37386875aa09567cd7f07377f981c58.png

这样,我们成功的遍历了这个字典。

当然,如果你想单纯的,遍历字典的键,或者遍历字典的值,可以使用这两个方法:keys() ,values()

示例:

遍历键

a7a748229b0aece929b932c595f252dc.png

遍历值

fea97e7a82fc72ba393407c6fe581442.png

大家同样可以将曾经学过的del语句用到这里,用于删除整个字典或者删除某个键值对。如下图:删除键值对 ‘math’ : 90

199950d7e4ae3d5372d5c353b3af485b.png

此外,如果要增加键值对,或者修改某个键所对应的值,都可以采用赋值的方法

示例:

增加键值对:假设你想添加的键值对存在键,然后目前你只需要进行赋值。

9639a0826ba7d113376b9829079b708b.png

可以看到,我们就完成了键值对的添加。

同样的,如果需要更改某个键所对应的值,直接进行赋值就好了。如下图:

将数学成绩改为50

d4544b6fbc7107c8faec31f8765f7e85.png

可以看到两次的打印的结果就不一样了。

嵌套

什么是嵌套?

说嵌套你可能没听过,或者不明白。那么我们先换一个词来说,套娃

cdfc204b4a3b672e0ae5d99aa0e21443.gif

我想你应该明白我什么意思。嵌套其实和套娃差不多但有差别,差不多的是,嵌套就是像套娃这样,一个里面套一个,只要你愿意,可以无限制的套下去。但区别就在于,嵌套的时候,一个娃娃里套的可以不只一个娃娃。更加类似于一个盒子,打开一个大盒子,里面可能有好几个小盒子,打开小盒子里面又有好几个盒子。当然,这里在做比喻的时候的大小概念是相对的。

那么嵌套目前是怎么体现的呢?

在我们目前学习的范围内,嵌套的体现就是:

列表里面包含列表,元组,或者字典。同样的也可以是字典里面包含列表,元组,甚至是字典。接下来,我们就来看看一些简单的嵌套。

字典里嵌套列表

比如说我们常见的填地址的时候,点开省就会出现所有的省份,点开县就会出现所有的县,那么我们来简单的模拟一下。

0e19820847059ea0e4ad3ca6a64fd184.png

如果愿意的话,你可以将省,市,区分别用三个列表储存,然后统一储存在一个字典中。

列表里面嵌套字典

这里我们就模拟一下每个的个人身高体重信息。

e03d5001fa9c32c9fba4dbffafb51175.png

当然这不是非常好的示例,但我想大家应该明白我的意思。

如果需要的话,你还可以在字典里面嵌套字典,不过这些具体的应用,将在后阶段基于小项目学习时我们继续讲。还是希望大家能够理解概念。

577ec6b239350cefb447fee886461c70.png

加入我们,一起【挑战自学Python编程一百天】!

明日内容:while循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值