字典实战——字典用法说明——使用字典模拟灵活的列表:整数键

未匹配的标注

前面列表中的最后一点非常重要,需要用几个例子来说明。使用列表时,向远离列表末尾的偏移量赋值是非法的:

>>> L = []
>>> L[99] = 'spam'
Traceback (most recent call last):
File "<stdin>", line 1, in ?
IndexError: list assignment index out of range

虽然可以使用重复来预先分配所需要的那么大的列表(比如:[0]*100),但还可以使用不需要这种空间分配的字典来做类似的事情。通过使用整数键,字典能模拟出似乎根据偏移量赋值来增长的列表:

>>> D = {}
>>> D[99] = 'spam'
>>> D[99]
'spam'
>>> D
{99: 'spam'}

这里,看起来好像D是一个100项的列表,但它其实是单条目的一个字典;键99的值是字符串'spam'。可以使用很像列表的偏移量来访问这个结果,如果需要,使用getin测试来捕获不存在的键,但不需要为所有可能需要在未来赋值的位置分配空间。当像这样使用时,字典像更灵活的列表的等价物。

作为另一个例子,还可以在之前的电影数据库的第一个代码中避免把引号括起来,虽然是以一些表现力作为代价(键不能包含非数字的字符):

>>> table = {1975: 'Holy Grail',
... 1979: 'Life of Brian', # Keys are integers, not strings
... 1983: 'The Meaning of Life'}
>>> table[1975]
'Holy Grail'
>>> list(table.items())
[(1979, 'Life of Brian'), (1983, 'The Meaning of Life'), (1975, 'Holy
Grail')]

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~