加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

笨办法学Python 习题 39: 字典, 可爱的字典

发布时间:2020-12-17 17:02:04 所属栏目:Python 来源:网络整理
导读:接下来我要教你另外一种让你伤脑筋的容器型数据结构,因为一旦你学会这种容器,你将拥有超酷的能力。这是最有用的容器:字典 (dictionary) 。 Python 将这种数据类型叫做 “ dict” ,有的语言里它的名称是 “ hash” 。这两种名字我都会用到,不过这并不重

接下来我要教你另外一种让你伤脑筋的容器型数据结构,因为一旦你学会这种容器,你将拥有超酷的能力。这是最有用的容器:字典 (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()

结果

#?-*-?coding:utf-8?-*-
class?Song(object):?#创建类
????def?__init__(self,??????????????????????"With?pockets?full?of?shells"])

happy_baby.sing_me_a_song()

bulls_on_parde.sing_me_a_song()

结果

Happy?birthday?to?you
I?dont't?want?to?get?sued
So?I'll?stop?right?there
They?rally?around?the?family
With?pockets?full?of?shells

加分习题

1. 在 Python 文档中找到 dictionary ( 又被称作 dicts,dict) 的相关的内容,学着对 dict 做更多的操作。

2. 找出一些 dict 无法做到的事情。例如比较重要的一个就是 dict 的内容是无序的,你可以检查一下看看是否真是这样。

3. 试着把 for-loop 执行到 dict 上面,然后试着在 for-loop 中使用 dict 的 items() 函数,看看会有什么样的结果。

常见问题回答

列表和字典有何不同?

列表是有序排列的一些物件,而字典是将一些物件( keys )对应到另外一些物件( values )的数据结构。

字典能用在哪里?

各种你需要通过某个值去查看另一个值的场合。其实你可以把字典当做一个“查询表”。

列表能用在哪里?

列表是专供有序排列的数据使用的。你只要知道索引就能查到对应的值了。

有没有办法弄一个可以排序的字典?

看看 Python 里的 collections.OrderedDict 数据结构。上网搜索一下文档和用法。


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读