返回介绍

第 3 章 内置数据类型

发布于 2019-09-14 13:30:28 字数 9887 浏览 1063 评论 0 收藏 0

第 3 章 内置数据类型

  • 3.1. Dictionary 介绍
    • 3.1.1. Dictionary 的定义
    • 3.1.2. Dictionary 的修改
    • 3.1.3. 从 dictionary 中删除元素
  • 3.2. List 介绍
    • 3.2.1. List 的定义
    • 3.2.2. 向 list 中增加元素
    • 3.2.3. 在 list 中搜索
    • 3.2.4. 从 list 中删除元素
    • 3.2.5. 使用 list 的运算符
  • 3.3. Tuple 介绍
  • 3.4. 变量声明
    • 3.4.1. 变量引用
    • 3.4.2. 一次赋多值
  • 3.5. 格式化字符串
  • 3.6. 映射 list
  • 3.7. 连接 list 与分割字符串
    • 3.7.1. 字符串方法的历史注解
  • 3.8. 小结

让我们用点儿时间来回顾一下您的第一个 Python 程序。 但首先, 先说些其他的内容, 因为您需要了解一下 dictionary (字典)、tuple (元组) 和list (列表) (哦, 我的老天!) 。如果您是一个 Perl hacker, 当然可以撇开 dictionary 和 list, 但是仍然需要注意 tuple。

3.1. Dictionary 介绍

  • 3.1.1. Dictionary 的定义
  • 3.1.2. Dictionary 的修改
  • 3.1.3. 从 dictionary 中删除元素

Dictionary 是 Python 的内置数据类型之一, 它定义了键和值之间一对一的关系。

注意
Python 中的 dictionary 就象 Perl 中的 hash (哈希数组)。在 Perl 中, 存储哈希值的变量总是以 % 字符开始;在 Python 中, 变量可以任意取名, 并且 Python 在内部会记录下其数据类型。
注意
Python 中的 dictionary 象 Java 中的 Hashtable 类的实例。
注意
Python 中的 dictionary 象 Visual Basic 中的 Scripting.Dictionary 对象的实例。

3.1.1. Dictionary 的定义

例 3.1. 定义 Dictionary

>>> d = {"server":"mpilgrim", "database":"master"} 1
>>> d
{'server': 'mpilgrim', 'database': 'master'}
>>> d["server"]                                    2
'mpilgrim'
>>> d["database"]                                  3
'master'
>>> d["mpilgrim"]                                  4
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
KeyError: mpilgrim
1首先我们创建了新 dictionary, 它有两个元素, 将其赋给变量 d 。每一个元素都是一个 key-value 对, 整个元素集合用大括号括起来。
2'server' 是一个 key, 它所关联的值是通过 d["server"] 来引用的, 为 'mpilgrim'。
3'database' 是一个 key, 它所关联的值是通过 d["database"] 来引用的, 为 'master'。
4您可以通过 key 来引用其值, 但是不能通过值获取 key。所以 d["server"] 的值为 'mpilgrim', 而使用 d["mpilgrim"] 会引发一个异常, 因为 'mpilgrim' 不是一个 key。

3.1.2. Dictionary 的修改

例 3.2. 修改 Dictionary

>>> d
{'server': 'mpilgrim', 'database': 'master'}
>>> d["database"] = "pubs" 1
>>> d
{'server': 'mpilgrim', 'database': 'pubs'}
>>> d["uid"] = "sa"        2
>>> d
{'server': 'mpilgrim', 'uid': 'sa', 'database': 'pubs'}
1在一个 dictionary 中不能有重复的 key。给一个存在的 key 赋值会覆盖原有的值。
2在任何时候都可以加入新的 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" 1
>>> d
{'key': 'other value'}
>>> d["Key"] = "third value" 2
>>> d
{'Key': 'third value', 'key': 'other value'}
1为一个已经存在的 dictionary key 赋值, 将简单覆盖原有的值。
2这不会为一个已经存在的 dictionary key 赋值, 因为在 Python 中是区分大小写的, 也就是说 'key' 与 'Key' 是不同的。 所以这种情况将在 dictionary 中创建一个新的 key-value 对。虽然看上去很相近, 但是在 Python 眼里是完全不同的。

例 3.4. 在 dictionary 中混用数据类型

>>> d
{'server': 'mpilgrim', 'uid': 'sa', 'database': 'pubs'}
>>> d["retrycount"] = 3 1
>>> d
{'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 'retrycount': 3}
>>> d[42] = "douglas"   2
>>> d
{'server': 'mpilgrim', 'uid': 'sa', 'database': 'master',
42: 'douglas', 'retrycount': 3}
1Dictionary 不只是用于存储字符串。Dictionary 的值可以是任意数据类型, 包括字符串, 整数, 对象, 甚至其它的 dictionary。在单个 dictionary 里, dictionary 的值并不需要全都是同一数据类型, 可以根据需要混用和匹配。
2Dictionary 的 key 要严格多了, 但是它们可以是字符串, 整数和几种其它的类型 (后面还会谈到这一点) 。也可以在一个 dictionary 中混用和配匹 key 的数据类型。

3.1.3. 从 dictionary 中删除元素

例 3.5. 从 dictionary 中删除元素

>>> d
{'server': 'mpilgrim', 'uid': 'sa', 'database': 'master',
42: 'douglas', 'retrycount': 3}
>>> del d[42] 1
>>> d
{'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 'retrycount': 3}
>>> d.clear() 2
>>> d
{}
1del 允许您使用 key 从一个 dictionary 中删除独立的元素。
2clear 从一个 dictionary 中清除所有元素。注意空的大括号集合表示一个没有元素的 dictionary。

进一步阅读

  • How to Think Like a Computer Scientist 讲授了 dictionary 和如何 使用 dictionary 模拟稀疏矩阵。
  • Python Knowledge Base 有许多 使用 dictionary 的示例代码。
  • Python Cookbook 讨论了 如何通过 key 对 dictionary 的值进行排序。
  • Python Library Reference 总结了 所有 dictionary 方法。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文