一般情况下,我们都可以用列表来存放数据。但是,某些时候,字典比列表更加实用:
(1)表示一个游戏棋盘的状态,每个键都是由坐标值组成的元组。
(2)存储文件修改时间,用文件名作为键。
(3)数字电话簿等。
映射可以使用任意不可变对象标识元素。最常用的类型是字符串和元组。而字典是python中唯一内建的映射函数。字典中的值没有特定的顺序,但都存放在特定的Key下。且每个键值对内部都用冒号进行分割,对之间用逗号隔开。整个字典用{}花括号括起来。
字典中的每个键都是唯一的,但是其值不需要。值可以是任何数据类型,但是键必须是不可变的。
>>> dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
>>> dict
{'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
>>> dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
>>> dict['Alice']
'2341'
>>> dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
>>> dict['Alice'] #返回关联到Alice上的值
'2341'
>>> dict['Alice']='1111'#更新键Alice
>>> dict #查看字典
{'Alice': '1111', 'Beth': '9102', 'Cecil': '3258'}
>>> len(dict) #返回dict中键值对的数量
3
>>> del dict['Beth'] #删除字典dict中键为Beth的键值对
>>> dict
{'Alice': '1111', 'Cecil': '3258'}
>>> 'Cecil' in dict #检查dict中是否有键为Cecil的项
True
字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。
两个重要的点需要记住:
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:
>>> dict={'name':'Alice','name':'Bob'}
>>> dict['name']
'Bob'
2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行,如下实例:
>>> dict = {['Name']: 'Runoob', 'Age': 7}
Traceback (most recent call last):
File "", line 1, in
TypeError: unhashable type: 'list'
注意:字符串和元组是不可变的,而列表是可以更改的!
前面已经学过如何使用字符串格式化元组中所有的值。如果使用的是字典(只以字符串作为键的)而不是元组,会使字符串格式化更加酷一些。在每个转换说明符(conversion specifier)中的%字符后面,可以加上键(用圆括号括起来),后面再跟上其他说明元素。如下:
>>> phonebook={'Beth':'9029','Alice':'2182','Bob':'1292'}
>>> "Bob's phone number is %(Bob)s."%phonebook
"Bob's phone number is 1292."
除了增加增加的字符串键外,转换说明符还是像以前一样工作。当以这种方式使用字典时,只要所给出的键能在字典中找到,就可以使用任意数量的转换说明符。这类字符串格式化在模板系统中非常有用!
序号 | 函数及描述 |
---|---|
1 | radiansdict.clear() 删除字典内所有元素 |
2 | radiansdict.copy() 返回一个字典的浅复制 |
3 | radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
4 | radiansdict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值 |
5 | key in dict 如果键在字典dict里返回true,否则返回false |
6 | radiansdict.items() 以列表返回可遍历的(键, 值) 元组数组 |
7 | radiansdict.keys() 以列表返回一个字典所有的键 |
8 | radiansdict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
9 | radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里 |
10 | radiansdict.values() 以列表返回字典中的所有值 |
11 | pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 |
12 | popitem() 随机返回并删除字典中的一对键和值(一般删除末尾对)。 |