继续进行我的《Python从入门到实践》的读书笔记,这也是适合初学者的学习教程。
请点击以下蓝色字链接,进入代码编程页面,输入文章中的代码进行练习,点击运行就可以查看运行结果。
Python在线编程页面1
Python在线编程页面2
祝你在Python的平行异世界玩得开心!
不怕慢,就怕站。——恩施土话
这是我们恩施人民耳熟能详的一句土话,不怕慢,就怕站。说的是:任何事情,不管是学习或者工作,不怕你慢慢走,就怕你停下来不走,不管怎么慢,只要你在继续行进终有一天会达到目的地。
因为要写007写作践行文章,所以逼着自己每周或者是2到3周完成一章的Python编程学习,慢慢的走到今天也爬行到了第六章,真的体会到了“不怕慢,就怕站!”。只要在走,一定会到目的地。
结束了第五章又进入了新的旅程,真的有点小激动,让我们开始今天的学习吧。
《Python从入门到实践》第六章 字典
在本章中,我们将学习把两个信息进行关联,然后存储到变量中。这个变量是特殊的,名为字典。字典有很重要的作用,可以为各种真实物体建模。
比如创建一个表示“人”的字典,想在里面存储多少信息就存储多少信息,这个人的姓名、年龄、地址、职业以及要描述的任何方面;或者是,存储任意两种相关联的信息,比如说一系列的单词和它的含义;一些人名以及他喜欢的数字;一系列的山脉以及它们的海拔。
让我们先看一下第六章的整体内容:
我们今天从第一节到第三节对字典的使用进行全面地学习:
下面我们先来看一个简单的字典:
6.1 一个简单的字典
友情提醒:这本书举的示例都非常简单易懂,但由于是外国人编写的,所以每个变量都使用了很长的英文单词,对于像我这样的英语小白来说,由于对单词不熟悉,这样会干扰我学习正课内容。
所以,我在学习的过程中和笔记记录中,将所有的英文单词变量名都简化为x、y、z,这些大家熟悉的变量名,这样可以降低认知负荷,迅速进入Python字典这个新领域。
如果是英文比较不白的人,你们可以直接使用书上的示例更清晰。而且,那也是变量名的推荐命名方法,因为看变量名就一目了然,知道里面存的数据是啥类型。
对照我们前面学过的普通变量和列表变量我们来学习今天的字典变量,代码及运行结果如下:
下面对上面的代码进行一下详细解释:
#Part4 & Part5 vs Part6-001 井号这一行表示:后续的字符不参与程序运行,只是起到解释作用
x=1 第一个语句,给x这个简单变量赋值为1
print (x) 显示x的值
y=[] 给y赋一个空值,这是我们约定俗成的做法,列表在使用之前,给它赋一个没有任何元素的空值。要注意的是:等号后面是正反两个中括号,中间没有任何字符。
y=[1,2,3,4,5] 给y这个列表变量赋予五个元素
print (y) 显示y的值
z={} 给z这个字典赋一个空值,等号后面是正反两个大括号,中间没有任何字符。
z={'aa':1,'bb':2,'cc':3,'dd':4,'ee':5} 给z这个字典变量赋五个"键-值对"
print (z ) 显示z的值
我们来仔细分析一下,这个特殊的字典赋值语句,这个语句是给z这个字典变量赋五个"键-值对":
z={'aa':1,'bb':2,'cc':3,'dd':4,'ee':5}
首先我们来看看什么是键值对,就是一个键对应一个取值,它们组成一对,是不可分割的一个数据的两个方面。
'aa' : 1 在这个键-值对里,'aa'这个键,被赋予的是1这个数值;
'bb' : 2 在这个键-值对里,'bb'这个键,被赋予的是2这个数值。
依次类推,一共有五组值,被赋给了a这个字典变量。
在书中,字典变量就叫字典,因为我们还不熟悉,所以比照简单变量把它称作字典变量,后续的课程中会直接简称作字典。
字典的赋值是用大括号括起来的n组数,每组数都包含两个不可分割的部分,即用冒号分隔的“键:值”,用文字表示如下:
6.2 使用字典
要使用字典,我们就需要访问字典中的值。
获取与键相关联的值,可依次指定字典名和放在方括号内的键。操作方法是:
这种访问方法我们非常熟悉,就是我们在上一章列表中使用过的,利用列表名称加上元素的编号,就可以得到。 现在我们回忆一下第五章列表的使用:
在第五章列表中,我们给一个列表赋五个元素的值,利用列表名称和元素的编号,就可以轻松的访问列表的值。同样的道理,我们在第六章字典中也可以利用"键"来访问对应的值。
6.2.1 访问字典中的值
字典中可包含任意数量的键值对,首先定义一个字典,然后从字典中获取与键相关联的值。
6.2.2 添加键—值对
字典是一种动态结构,可随时在其中添加键值对,我们继续给前面的字典添加键值对。
该字典最终包含七个键值对,原有不变,新增两个。
注意:键值对的排列顺序与添加顺序不相同,Python程序不关心键值对的添加顺序,只关心键和值之间的关联关系。
6.2.3 先创建一个空字典
空字典和前面学过的空列表存在的意义相同,都是事先定义,便于事后临时添加元素。
比如,用户临时提供的用户名、密码、大量基本资料数据等等。
或者是,用来存储由程序自动生成的大量键值对代码。比如,打怪随机掉落的物品清单等等。
空字典的创建方法跟赋值语句完全相同,只不过大括号中没有任何数据,如图所示:
6.2.4 修改字典中的值
修改字典中的值,操作方法与 6.2.2 中添加键值对完全相同,在此,不再重复。
6.2.5 删除键—值对
对照我们第五章学习的删除列表中的元素,可以很轻松的完成删除键值对的操作,同样的被删除的键值对会永远消失,无法再访问。
语句是:del x['a']
即:del 字典名[键名]
注意:被删除的键值对会永远消失,无法再访问,其他键值对,不受影响。
所以如果我们在删除之后还想要访问被删除的这个键值对,那么需要删除之前将它赋值给一个新的临时字典。
6.2.6 由类似对象组成的字典
本节主要讲较大的字典放在多行和较长的print语句分成多行。
由于字典中可以包含一系列的键-值对,所以当键值对很多,或者是一个键值对内容很长的时候,就可以进行分行书写,代码如下:
运行结果如下:
赋值的方式是:变量名、赋值号、大括号在第一行,然后回车。从第二行开始书写键值对,最后的大括号也另起一行。大家可以对照,进行一下代码的输入。
6.3遍历字典
我们在第五章学习了遍历列表,使用的是for循环。
同样的,在第六章字典中,也使用for循环来遍历字典中的键值对。
共有多种方法,一是遍历所有键值对,二是只遍历键,三是只遍历值。
6.3.1 遍历所有的键-值对
代码如下:
x={'a':1,'b':2,'c':3}
for y,z in x.items():
print(y)
print(z)
运行结果如下:
这里引进一个新的概念:items,这个单词有“逐条列出”的意思,意即遍历所有键-值对。
注意,for语句最后的冒号千万别忘记书写了。
6.3.2 遍历字典中的所有键
在不需要使用字典里的值时,可以仅仅遍历字典中的键名。
代码如下:
x={'a':1,'b':2,'c':3}
for y in x.keys():
print(y)
这里引进第二个新概念,keys,这个单词有“键”的意思,意即遍历所有键值对中的键名。
代码及运行结果如下:
6.3.3 按顺序遍历字典中的所有键
要以特定的顺序返回元素,方法是在for循环中对返回的键进行排序。
为此,可使用函数sorted()来获得按特定顺序排列的键列表的副本。
x={}
x={'a':1,'b':2,'c':3,'d':4,'e':5}
print x
for y in x.keys():
print(y)
for y in sorted(x.keys()):
print(y)
要以特定的顺序返回元素,方法是在for循环中对返回的键进行排序。为此,可使用函数sorted()来获得按特定顺序排列的键列表的副本。
代码及运行结果如下:
我们可以看到,第一次使用x.keys()时,遍历字典是没有按照顺序输出的。第二次,使用sorted(x.keys())时,就按照顺序输出了。
6.3.4 遍历字典中的所有值
如果你感兴趣的主要是字典包含的值,可使用方法values(),它返回一个值列表,而不包含任何键。
我们可以看到,显示出的结果重复数据也全部列出。
为剔除重复项,可使用集合set,集合类似于列表,但每个元素都必须是独一无二的。
代码及运行结果如下:
运行结果是剔除掉相同的值,只列出了不同的值。
下一章,我们学习第四节嵌套
今天的学习到此结束,下次再见,祝秋天快乐!
201709281-6:47初稿
20170928-17:08 修改
20170928-17:33再修定稿