导航: 起始页 > Dive Into Python > 内置数据类型 | << >> | ||||
Python 研究(Dive Into Python)Python 从新手到高手 [DIP_5_4_CPUG_RELEASE] |
让我们用点儿时间来回顾一下您的第一个 Python 程序。 但首先, 先说些其他的内容, 因为您需要了解一下 dictionary (字典)、tuple (元组) 和list (列表) (哦, 我的老天!) 。如果您是一个 Perl hacker, 当然可以撇开 dictionary 和 list, 但是仍然需要注意 tuple。
Dictionary 是 Python 的内置数据类型之一, 它定义了键和值之间一对一的关系。
Python 中的 dictionary 就象 Perl 中的 hash (哈希数组)。在 Perl 中, 存储哈希值的变量总是以 % 字符开始;在 Python 中, 变量可以任意取名, 并且 Python 在内部会记录下其数据类型。 |
Python 中的 dictionary 象 Java 中的 Hashtable 类的实例。 |
Python 中的 dictionary 象 Visual Basic 中的 Scripting.Dictionary 对象的实例。 |
例 3.1. 定义 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
例 3.2. 修改 Dictionary
>>> d {'server': 'mpilgrim', 'database': 'master'} >>> d["database"] = "pubs" >>> d {'server': 'mpilgrim', 'database': 'pubs'} >>> d["uid"] = "sa" >>> d {'server': 'mpilgrim', 'uid': 'sa', 'database': 'pubs'}
在一个 dictionary 中不能有重复的 key。给一个存在的 key 赋值会覆盖原有的值。 | |
在任何时候都可以加入新的 key-value 对。这种语法同修改存在的值是一样的。(是的, 它可能某天会给您带来麻烦, 您可能以为加入了新值, 但实际上只是一次又一次地修改了同一个值, 这是因为您的 key 没有按照您的想法进行改变。) |
请注意新的元素 (key 为 'uid', value 为 'sa') 出现在中间。实际上, 在第一个例子中的元素看上去是的有序不过是一种巧合。现在它们看上去的无序同样是一种巧合。
Dictionary 没有元素顺序的概念。说元素 “顺序乱了” 是不正确的, 它们只是序偶的简单排列。这是一个重要的特性, 它会在您想要以一种特定的, 可重复的顺序 (象以 key 的字母表顺序) 存取 dictionary 元素的时候骚扰您。有一些实现这些要求的方法, 它们只是没有加到 dictionary 中去。 |
当使用 dictionary 时, 您需要知道: dictionary 的 key 是大小写敏感的。
例 3.3. Dictionary 的 key 是大小写敏感的
>>> d = {} >>> d["key"] = "value" >>> d["key"] = "other value" >>> d {'key': 'other value'} >>> d["Key"] = "third value" >>> d {'Key': 'third value', 'key': 'other value'}
例 3.4. 在 dictionary 中混用数据类型
>>> 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}
<< 测试模块 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
List 介绍 >> |