Python基础教程(第2版)学习笔记_013:第4章 字典
时间:2011-03-17 来源:谢晖
如果需要将值分组到一个结构中,并且通过编号对其进行引用,列表(list)就能实现这个功能。而在本章中,将会学到一种通过名字引用值的数据结构。这种结构称为映射(mapping)。字典是Python中唯一内建的映射类型,字典的值并没有特殊的顺序(实际列表的值也没有特殊的顺序),但都存储在一个特定的键(key)里,而键可以是数字、字符串甚至是元组(但没说可以是列表)。
1、字典的使用
细细揣摩“字典”这个词,已经给出了有关这个数据结构功能的一些提示:一方面,对于普通的书来说,都是按照从头到尾的顺序进行阅读,如果愿意,也可以快速翻到某一页,这听起来有点像Pthon的列表。另一方面,现实中的字典及在Python中的字典都进行了构造,从而可以轻松查到某个特定的词语(键),从而找到它的定义(值)。也就是键与值相对应,并且键是唯一的索引项,想找到值,就必须通过键来实现查找。
先看一个关于电话号码的查找方法:
假如有一个人名列表如下:
再来一个列表来存储对应每个人的电话号码:
如果想查找比如姓名为a人的电话号码,可以这样实现:
简单吧?是不是有点成就感,竟然会在列表中进行方法嵌套了!
有个小问题了,为什么电话号码不能存储为数值呢?看看d的电话号码就明白了。
但是这样是不是感觉有点繁琐呢?程序是用来做什么的?让过程变的简单!
如果有个字典就好了,直接查找a的电话一步就给出结果不是更好些?比如:phonebook['a'],就可以得到1.
2、创建和使用字典
字典可以通过下面的方式创建:
字典由多个键及与其对应的值一块构成的对组成(我们也把键:值对 称为项,即项包括两部分——键及值)。要建立电话号码,很明显的名字是键,而电话号码是值。中间用冒号隔开,而项与项之间用逗号隔开,而整个字典是由一对大括号括起来。
要建立空字典呢?直接由两个大括号组成,像这样:{}
很明显:键是唯一的,但值可以不唯一,什么意思?一个字典,键必须唯一,不然怎么索引啊,但每个键对应的值,与其它键对应的值并不一定非得互斥。