前言
前几节中我们学了列表,列表这种数据结构适合于将值组织到一个结构中,并且通过编号对其进行应用,但是我们一般记录某种数据一般都会用名字来查找,本节你会学到一种通过名字来引用值得数据结构。
这种类型的数据结构成为映射。字典是Python中唯一内建的映射类型。
字典中的值没有特殊的顺序,但是都是存储在一个特定的值(Key)下。键可以是数字、字符串甚至是元组
4.1 字典的使用
以下这些情况,字典比列表更适用:
表示一个游戏棋盘的状态,每个键都是由坐标值组成的元素
存储文件修改时间,用文件名作为键
数字电话/地址簿
4.2 创建和使用字典
字典可以通过下面的方式创建
phonebook={'Alice':'0234','Jane':'1111','May':'9989'}
字典由多个键,与其对应的值构成的键-值对组成(我们也把键-值成为项)。
每个键和他的值之间用冒号(:)隔开,项之间用(,)隔开,整个字典由一个大括号括起来
上例中名字是键,电话号码是值
注意:字典中键是唯一的,而值并不唯一
4.3 dict函数
dict函数:通过其他映射(比如其他字典)或者(键、值)对的序列建立字典
items=[('name','Gumby'),('age','42')]d=dict(items)d#输出{'name':'Gumby','age':'42'}
4.3 基本字典操作
4.3.1 基本操作
字典的基本行为在很多方面与序列类似:
len(d)返回d中项(键-值对)的数量
d[k]返回关联到键k的值
d[k]=v将值v关联到键k上
del d[k]删除键为k的项
k in d检查d中是否含有键为k的项
4.3.2 字典和列表的不同
键类型
字典的键不一定为整数数据(但也可以是),键可以是任意的不可变类型,比如浮点型(实型)、字符串或元组
自动添加
即使键起初在字典中并不存在,也可以为它赋值,这样字典就会建立新的项。而(在不使用append方法或者其他类似操作的情况下)不能将值关联到列表范围之外的索引上
成员资格
表达式k in d(d为字典)查找的是键,而不是值。
表达式v in l(l为字典)则用来查找值,而不是索引。
注意: 在字典中检查键的成员资格比在列表中检查值的成员资格更高效,数据结构的规模越大,两者的效率差距越明显。
4.4 字典的格式化字符串
07节我们学会了如何使用字符串格式化元组中所有的值,如果使用的是字典而不是元组呢?下面我们来看看!
使用方法:在每个转换说明符中的%字符后面,可以加上键(用圆括号括起来的),后面再跟上其他说明元素(依次为转换标志、最小字段宽度、精度值、转换类型)
说明:和之前的元组的格式化的区别在于增加字符串键,其余还是和以前一样工作
phonebook={'Alice':'0234','Jane':'1111','May':'9989'}
'Alice’s phone number is %(Alice)s'%(phonebook)
#输出'
Alice’s phone number is 0234'
领取专属 10元无门槛券
私享最新 技术干货