首页 > 深入Python > 开始了解Python > 字典 101 | << >> | ||||
diveintopython.org Python for experienced programmers |
有必要先讲些别的,因为你需要了解什么是字典,元组,和列表(我的老天!)。如果你一个Perl高手,你大概可以忽略关于字典和列表那一块,但是你仍然应该对序列进行关心。
字典是Python的内置数据类型之一,它定义了关键字与值之间一对一的关系。这一点就象Perl中的关联数组,Java中的 Map ,或VBScipt中的 Scripting.Dictionary 对象。
Python中的字典就象Perl中的哈希数组(hash)。在Perl中,存储哈希值的变量总是以 % 字符开始;在Python中,变量可以命名为任何东西,并且Python在内部会记录下数据类型。 |
Python中的字典就象Java中的一个 Hashtable 实例。 |
Python中的字典就象Visual Basic中的 Scripting.Dictionary 对象的一个实例。 |
>>> d = {"server":"mpilgrim", "database":"master"} >>> d {'server': 'mpilgrim', 'database': 'master'} >>> d["server"] 'mpilgrim' >>> d["database"] 'master' >>> d["mpilgrim"] Traceback (innermost last): File "<interactive input>", line 1, in ? KeyError: mpilgrim
>>> d {'server': 'mpilgrim', 'database': 'master'} >>> d["database"] = "pubs" >>> d {'server': 'mpilgrim', 'database': 'pubs'} >>> d["uid"] = "sa" >>> d {'server': 'mpilgrim', 'uid': 'sa', 'database': 'pubs'}
不能在一个字典中有重复的键字。给一个存在的键字赋值会抹掉原来的值。 | |
可以在任何时候加入新的键-值对。这种语法同修改存在的值一样。(是的,它可能某天会给你带来麻烦,你可能认为增加了新值,但实际上只是反复地修改了同样的值,因为你的键字没有按照你的想象改变。) |
注意新的元素(键字为 uid,值为 sa)出现在字典中间。实际上,它只不过是一种巧合,在第一个例子中的元素看上去是有序的。现在它们看上去无序了则更是一种巧合。
字典没有元素顺序的概念。说元素顺序乱了是不正确的,它们只是简单的无序。这是一个重要的特性,它会在你想要以一种特定的,可重复的顺序(象以键字的字母表顺序)存取字典元素的时候骚扰你。有一些实现的方法,它们只是没有加到字典中去。 |
>>> d {'server': 'mpilgrim', 'uid': 'sa', 'database': 'pubs'} >>> d["retrycount"] = 3 >>> d {'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 'retrycount': 3} >>> d[42] = "douglas" >>> d {'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 42: 'douglas', 'retrycount': 3}
字典不是只用于字符串。字典的值可以是任意数据类型,包括字符串,整数,对象,或者甚至其它的字典。在一个单个字典里,字典的值并不需要全都是同一数据类型,可以根据需要混用和配匹。 |
|
字典的关键字要严格一些,但是它们可以是字符串,整数和几种其它的类型(后面还会谈到这一点)。也可以在一个字典中混用和配匹关键字。 |
>>> d {'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 42: 'douglas', 'retrycount': 3} >>> del d[42] >>> d {'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 'retrycount': 3} >>> d.clear() >>> d {}
del 允许你根据键字将单个元素从字典中删除。 | |
clear 会删除一个字典中所有元素。注意空的大括号所表示的集合说明一个字典没有元素。 |
进一步阅读
测试模块 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
列表 101 |