3.5 字典
定义在python中另一种数据类型是字典。其他语言中字典可能被定义为“组合记忆”或“组合数组”。 不像序列能用数字可以索引,在字典中是任何一种不变类型的关键字keys来查询。字符串和数字是常见的关键字。 如果元组中仅仅包含字符串,数组或者重数,那么元组也可以充当关键字。但是如果元组中直接或者间接包含可变的对象,那么元组就不能做关键字。
你不能把列表用作关键字,因为列表在索引赋值,切片赋值以及方法 append()和extend()运用时可以改变本身值。
把字典认为是一对无序的key:value的对,并且关键字在一个字典中是唯一的是对字典非常正确的认识。可以用del方法来删除一对键值对。当你用一个已经存在的键去保存值时,与其相关联的值将会丢弃。用没有存在的关键字去获得值时会出错。
用字典中的方法list(d.keys())就可以获得包含字典中所有的关键字的列表,列表中的关键字是无序的,如果你想要对关键字进行排序,可以用方法sorted(d.keys()).可以用in 关键字来检查单个关键字是否在字典中。
如下是运用字典的一个简单例子:
>>> tel = {’jack’: 4098, ’sape’: 4139}
>>> tel[’guido’] = 4127
>>> tel
{’sape’: 4139, ’guido’: 4127, ’jack’: 4098}
>>> tel[’jack’]
4098
>>> del tel[’sape’]
>>> tel[’irv’] = 4127
>>> tel
{’guido’: 4127, ’irv’: 4127, ’jack’: 4098}
>>> list(tel.keys())
[’irv’, ’guido’, ’jack’]
>>> sorted(tel.keys())
[’guido’, ’irv’, ’jack’]
>>> ’guido’ in tel
True
>>> ’jack’ not in tel
False
在字典中可以用dict()构造方法直接直接从包含key-vlaue的序列中定义一个字典。
>>> dict([(’sape’, 4139), (’guido’, 4127), (’jack’, 4098)])
{’sape’: 4139, ’jack’: 4098, ’guido’: 4127}
此外,字典利用复合表达式从随机的key和value的表达式中来创建字典。
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
当关键字是简单的字符串时,可以用关键字参数直接指定对象,这样有时会更加的容易。
>>> dict(sape=4139, guido=4127, jack=4098)
{’sape’: 4139, ’jack’: 4098, ’guido’: 4127}