为了丰富学员们的课外知识,老师让我们助理分享这套Python系列教程。由于Python教程并非老师所写,所以不如老师的AI教学风趣幽默,望大家见谅!想要学习AI技术的新朋友可以去www.captainbed.net。本公众号由助理负责运营,只免费分享课外知识,不回复任何私信。


在继续学习之前,还要说说字典的另一个要点:尽管我们能够通过给新的键赋值来扩展字典,但是获取一个不存在的键值仍然是一个错误。

>>> D

{'a': 1,'c': 3,'b': 2}

>>> D['e'] = 99                  # Assigning new keys grows dictionaries

>>> D

{'a': 1,'c': 3,'b': 2,'e': 99}

>>> D['f']                       # Referencing a nonexistent key is an error

...error text omitted...

KeyError: 'f'

获取一个并不存在的东西往往是一个程序错误。但是,在一些通用程序中,我们编写程序时并不是总知道当前存在什么键,例如某些大程序是由成百上千个程序员协作编写而成的,你并不知道其它程序员为这个字典赋予了什么键值。在这种情况下,我们如何处理并避免错误发生呢?一个技巧就是首先进行测试。in关系表达式允许我们查询字典中一个键是否存在,并可以通过使用Python的if语句对结果进行分支处理:

>>> 'f' in D

False

>>> if not 'f' in D:

       print('missing')

missing

后面的文章将对if语句及语句的通用语法进行更多的讲解,这里所使用的形式很直接:它包含关键字if,紧跟着一个其结果为真或假的表达式,如果结果是真的话将运行一些代码。作为其完整的形式,在默认情况下,if语句也可以有else分句,以及一个或多个elif(else if)分句。

还有一些其他的方法来创建字典并避免获取不存在的字典键:get方法、Python 2.X的has_key方法(在Python 3.0中不可用)、try语句(一个捕获异常并从异常中恢复的工具)。下面是一些例子:

>>> value = D.get('x',0)             # Index but with a default

>>> value

0

>>> value = D['x'] if 'x' in D else 0 # if/else expression form

>>> value

0