首页 > Python基础教程 >
-
深入探究Python中的字典容器(4)
可以看到,创建字典(dictionary)需要键值和数据值。第一次从 list 创建字典(dictionary)的尝试失败了,这是因为没有匹配的键-数据值对。第二个和第三个示例演示了如何正确地创建 字典(dictionary):在第一种情况下,使用一个 list,其中的每个元素都是一个 tuple;在第二种情况下,也使用一个 list,但是其中的每个元素是另一个 list。在这两种情况下,内层容器都用于获得键到数据值的映射。
直接创建 dict 容器的另一个方法是直接提供键到数据值的映射。这种技术允许显式地定义键和与其对应的值。这个方法其实用处不大,因为可以使用花括号完成相同的任务。另外,如前面的例子所示,在采用这种方式时对于键不能使用数字,否则会导致抛出一个异常。
访问和修改字典(dictionary)
创建了 dictionary 之后,需要访问其中包含的数据。访问方式与访问任何 Python 容器数据类型中的数据相似,如清单 4 所示。
清单 4. 访问 dictionary 中的元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
>>> d = dict (zero = 0 , one = 1 , two = 2 , three = 3 ) >>> d { 'zero' : 0 , 'three' : 3 , 'two' : 2 , 'one' : 1 } >>> d[ 'zero' ] >>> d[ 'three' ] >>> d = { 0 : 'zero' , 1 : 'one' , 2 : 'two' , 3 : 'three' , 4 : 'four' , 5 : 'five' } >>> d[ 0 ] 'zero' >>> d[ 4 ] 'four' >>> d[ 6 ](most recent call last): File "<stdin>" , line 1 , in ?: 6 >>> d[: - 1 ](most recent call last): File "<stdin>" , line 1 , in ?: unhashable type |
可以看到,从字典(dictionary)中获取数据值的过程几乎与从任何容器类型中获取数据完全一样。在容器名后面的方括号中放上键值。当然,字典(dictionary)可以具有非数字的键值,如果您以前没有使用过这种数据类型,那么适应这一点需要些时间。因为在字典(dictionary)中次序是不重要的(dictionary 中数据的次序是任意的),所以可以对其他容器数据类型使用的片段功能,对于 字典(dictionary)是不可用的。试图使用片段或者试图从不存在的键访问数据就会抛出异常,指出相关的错误。
Python 中的字典(dictionary)容器也是易变的数据类型,这意味着在创建它之后可以修改它。如清单 5 所示,可以添加新的键到数据值的映射,可以修改现有的映射,还可以删除映射。
清单 5. 修改字典(dictionary)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
>>> d = { 0 : 'zero' , 1 : 'one' , 2 : 'two' , 3 : 'three' } >>> d[ 0 ] 'zero' >>> d[ 0 ] = 'Zero' >>> d { 0 : 'Zero' , 1 : 'one' , 2 : 'two' , 3 : 'three' } >>> d[ 4 ] = 'four' >>> d[ 5 ] = 'five' >>> d { 0 : 'Zero' , 1 : 'one' , 2 : 'two' , 3 : 'three' , 4 : 'four' , 5 : 'five' } >>> del d[ 0 ] >>> d { 1 : 'one' , 2 : 'two' , 3 : 'three' , 4 : 'four' , 5 : 'five' } >>> d[ 0 ] = 'zero' >>> d { 0 : 'zero' , 1 : 'one' , 2 : 'two' , 3 : 'three' , 4 : 'four' , 5 : 'five' } |