返回介绍

字典

发布于 2024-01-29 22:24:16 字数 1455 浏览 0 评论 0 收藏 0

除了列表以外,字典(dictionary)也许是Python之中最灵活的内置数据结构类型。如果把列表看做是有序的对象集合,那么就可以把字典当成是无序的集合。它们主要的差别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

作为内置类型,字典可以取代许多搜索算法和数据结构,而这些在较低级的语言中你可能不得不通过手工来实现。对字典进行索引是非常快速的搜索操作。字典有时也能执行其他语言中的记录、符号表的功能,可以表示稀疏(多数为空)数据结构等。Python字典的主要属性如下。

通过键而不是偏移量来读取

字典有时又叫做关联数组(associative array)或者是散列表(hash)。它们通过键将一系列值联系起来,这样就可以使用键从字典中取出一项。就像列表那样,同样可以使用索引操作从字典中获取内容。但是索引采取键的形式,而不是相对偏移。

任意对象的无序集合

与列表不同,保存在字典中的项并没有特定的顺序。实际上,Python将各项从左到右随机排序,以便快速查找。键提供了字典中项的象征性(而非物理性的)位置。

可变长、异构、任意嵌套

与列表相似,字典可以在原处增长或是缩短(无需生成一份拷贝)。它们可以包含任何类型的对象,而且它们支持任意深度的嵌套(可以包含列表和其他的字典等)。

属于可变映射类型

通过给索引赋值,字典可以在原处修改(可变),但不支持用于字符串和列表中的序列操作。实际上,因为字典是无序集合,所以根据固定顺序进行操作是行不通的(例如,合并和分片操作)。相反,字典是唯一内置的映射类型(键映射到值的对象)。

对象引用表(散列表)

如果说列表是支持位置读取的对象引用数组,那么字典就是支持键读取的无序对象引用表。从本质上讲,字典是作为散列表(支持快速检索的数据结构)来实现的,一开始很小,并根据要求而增长。此外,Python采用最优化的散列算法来寻找键,因此搜索是很快速的。和列表一样,字典存储的是对象引用(不是拷贝)。

表8-2总结了一些最为普通并具有代表性的字典操作[查看库手册或者运行dir(dict)或是help(dict)可以得到完整的清单,类型名为dict]。当写成常量表达式时,字典以一系列“键:值(key:value)”对形式写出的,用逗号隔开,用大括号括起来[1]。一个空字典就是一对空的大括号,而字典可以作为另一个字典(列表、元组)中的某一个值被嵌套。

[1]与列表相似,不会经常用常量创建字典。不过,列表和字典增长的方式不同。下一节我们将会看到,我们常常通过在运行时对新的键赋值来建立字典。这种方法对列表是不起作用的(列表通过append语句增长)。

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

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

发布评论

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