6.3 字典(Dictionary)

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

    6.3 字典(Dictionary) - 图1

    字典的特征总结如下:

    • 字典中数据必须是以键值对的形式出现的;
    • 逻辑上讲,键是不能重复的,而值可以重复;
    • 字典中的键(key)是不可变的,也就是无法修改的;而值(value)是可变的,可修改的,可以是任何对象。

    用下面这个例子来看一下,这是字典的书写方式:

    NASDAQ_code = {
    'BIDU':'Baidu',
    'SINA':'Sina',
    'YOKU':'Youku'
    }

    一个字典中键与值并不能脱离对方而存在,如果你写成 {'BIDU':} 会引发一个语法错误:

    6.3 字典(Dictionary) - 图2

    我们再试着将一个可变(mutable)的元素作为 key 来构建字典,比如列表:

    key_test = {[]:'a Test'}
    print(key_test)

    会引发另一个语法错误:

    6.3 字典(Dictionary) - 图3

    想必一次次的报错会让你深深记住这两个特征: 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!