4.2.2Python字典基本操作
下一篇: 4.2.3Python下字典的格式化字符串
字典的基本行为在很多方面与序列(sequence)相似,下面是字典几个常用的操作方法,其中d代表某个字典:
len(d)返回d中项(键-值对)的数量;
d[k]返回关联到键k上的值;
d[k] = v将值v关联到键k上;
del d[k]删除键为k的项;
k in d检查d中是否含有键为k的项。返回布尔型。
下面给出一些实例:
>>> d = dict(name="psz",age=25) >>> d {'name': 'psz', 'age': 25} >>> len(d) 2 >>> d['age'] 25 >>> del d['name'] >>> d {'age': 25} >>> d['name'] = 'peter' >>> d {'name': 'peter', 'age': 25} >>> 'age' in d True
尽管字典和列表有很多特性相同,但也有下面一些重要的区别。
键类型:字典的键不一定为整型数据(但也可能是),也可能是其他不可变类型,比如浮点型(实型)、字符串或者元组。
自动添加:即使某个键一开始在字典中并不存在,但也可以为它分配一个值,这样字典就会建立新的项。而(在不使用append方法或者其他类似操作的情况下)不能将值关联到列表范围之外的索引上。
成员资格:表达式k in d(d为字典)查找的是键,而不是值。表达式v in l(l为列表)则用来查找值,而不是索引。如果字典含有指定的键,查找相应的值就很容易。
在字典中检查键的成员资格比在列表中检查值的成员资格更高效,数据结构的规模越大,两者的效率差距越明显。
下面看下自动添加字典和列表的区别:
>>> x = [] >>> x[42] = 'psz' Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list assignment index out of range >>> x = {} >>> x[42] = 'psz' >>> x {42: 'psz'}
从上面可以看到,程序试图将字符串'psz'关联到一个空列表的42号位置上——这显然是不对的。因为列表这个位置不存在。如果想将其变为可能,我们可以用[None]*43或者其他方式初始化x,而不能仅仅用[]。而我们可以将'psz'直接关联到空字典的键42上。这样新的项便添加到字典中。
下一篇: 4.2.3Python下字典的格式化字符串