笨办法学Python 习题 39: 字典, 可爱的字典
接下来我要教你另外一种让你伤脑筋的容器型数据结构,因为一旦你学会这种容器,你将拥有超酷的能力。这是最有用的容器:字典 (dictionary) 。 Python 将这种数据类型叫做 “ dict” ,有的语言里它的名称是 “ hash” 。这两种名字我都会用到,不过这并不重要,重要的是它们和列表的区别。你看,针对列表你可以做这样的事情: >>>?things?=?['a',?'b',?'c',?'d'] >>>?print?things[1] b >>>?things[1]?=?'z' >>>?print?things[1] z >>>?print?things ['a',?'z',?'d'] >>> 你可以使用数字作为列表的索引,也就是你可以通过数字找到列表中的元素。而 dict 所作的,是让你可以通过任何东西找到元素,不只是数字。是的,字典可以将一个物件和另外一个东西关联,不管它们的类型是什么,我们来看看: >>>?stuff?=?{'name':?'Zed',?'age':?36,?'height':?6*12+2} >>>?print?stuff['name'] Zed >>>?print?stuff['age'] 36 >>>?print?stuff['height'] 74 >>>?stuff['city']?=?"San?Francisco" >>>?print?stuff['city'] San?Francisco >>> 你将看到除了通过数字以外,我们还可以用字符串来从字典中获取 stuff ,我们还可以用字符串来往字典中添加元素。当然它支持的不只有字符串,我们还可以做这样的事情: >>>?stuff[1]?=?"Wow" >>>?stuff[2]?=?"Neato" >>>?print?stuff[1] Wow >>>?print?stuff[2] Neato >>>?print?stuff {'city':?'San?Francisco',?2:?'Neato','name':?'Zed',?1:?'Wow','height':?74} >>> 在这里我使用了两个数字。其实我可以使用任何东西,不过这么说并不准确,不过你先这么理解就行了。当然了,一个只能放东西进去的字典是没啥意思的,所以我们还要有删除物件的方法,也就是使用 del这个关键字: >>>?del?stuff['city'] >>>?del?stuff[1] >>>?del?stuff[2] >>>?stuff {'name':?'Zed',?'height':?74} >>> 接下来我们要做一个练习,你必须非常仔细,我要求你将这个练习写下来,然后试着弄懂它做了些什么。这个练习很有趣,做完以后你可能会有豁然开朗的感觉。 #?-*-?coding:utf-8?-*- class?Song(object):?#创建类 ????def?__init__(self,lyrics):??#创建方法 ????????self.lyrics?=?lyrics ????def?sing_me_a_song(self):???#创建方法 ????????for?line?in?self.lyrics: ????????????print?line #添加htppy_baby属性 happy_baby?=?Song(["Happy?birthday?to?you",???????????????????"I?dont't?want?to?get?sued",???????????????????"So?I'll?stop?right?there"]) #添加bulls_on_parde属性 bulls_on_parde?=?Song(["They?rally?around?the?family",??????????????????????"With?pockets?full?of?shells"]) happy_baby.sing_me_a_song() bulls_on_parde.sing_me_a_song() 结果 结果 |