6.3 字典(Dictionary)
编程世界中其实有很多概念都基于现实生活的原型,字典这种数据结构的特征也正如现实世界中的字典一样,使用名称-内容进行数据的构建,在 Python 中分别对应着键(key)-值(value),习惯上称之为键值对。

字典的特征总结如下:
- 字典中数据必须是以键值对的形式出现的;
- 逻辑上讲,键是不能重复的,而值可以重复;
- 字典中的键(key)是不可变的,也就是无法修改的;而值(value)是可变的,可修改的,可以是任何对象。
用下面这个例子来看一下,这是字典的书写方式:
NASDAQ_code = {
'BIDU':'Baidu',
'SINA':'Sina',
'YOKU':'Youku'
}
一个字典中键与值并不能脱离对方而存在,如果你写成 {'BIDU':} 会引发一个语法错误:

我们再试着将一个可变(mutable)的元素作为 key 来构建字典,比如列表:
key_test = {[]:'a Test'}
print(key_test)
会引发另一个语法错误:

想必一次次的报错会让你深深记住这两个特征: key 和 value 是一一对应的,key 是不可变的。
同时字典中的键值不会有重复,即便你这么做,相同的键值也只能出现一次:
a = {'key':123,'key':123}
print(a)
字典的增删改查
首先我们按照映射关系创建一个字典,继续使用前面的例子:
NASDAQ_code = {'BIDU':'Baidu','SINA':'Sina'}
与列表不同的是,字典并没有一个可以往里面添加单一元素的“方法”,但是我们可以通过这种方式进行添加:
NASDAQ_code['YOKU'] = 'Youku'
print(NASDAQ_code)
列表中有用来添加多个元素的方法 extend() ,在字典中也有对应的添加多个元素的方法 update():
NASDAQ_code.update({'FB':'Facebook','TSLA':'Tesla'})
删除字典中的元素则使用 del 方法:
del NASDAQ_code['FB']
需要注意的是,虽说字典是使用的花括号,在索引内容的时候仍旧使用的是和列表一样的方括号进行索引,只不过在括号中放入的一定是——字典中的键,也就是说需要通过键来索引值:
NASDAQ_code['TSLA']
同时,字典是不能够切片的,也就是说下面这样的写法应用在字典上是错误的:
chart[1:4] # WRONG!
