- 译者序
- 前言
- 第1章 问答环节
- 第2章 Python 如何运行程序
- 第3章 如何运行程序
- 第4章 介绍 Python 对象类型
- 第5章 数字
- 第6章 动态类型简介
- 第7章 字符串
- 第8章 列表与字典
- 第9章 元组、文件及其他
- 第10章 Python 语句简介
- 第11章 赋值、表达式和打印
- 第12章 if 测试和语法规则
- 第13章 while 和 for 循环
- 第14章 迭代器和解析,第一部分
- 第15章 文档
- 第16章 函数基础
- 第17章 作用域
- 第18章 参数
- 第19章 函数的高级话题
- 第20章 迭代和解析,第二部分
- 第21章 模块:宏伟蓝图
- 第22章 模块代码编写基础
- 第23章 模块包
- 第24章 高级模块话题
- 第25章 OOP:宏伟蓝图
- 第27章 更多实例
- 第28章 类代码编写细节
- 第29章 运算符重载
- 第30章 类的设计
- 第31章 类的高级主题
- 第32章 异常基础
- 第34章 异常对象
- 第35章 异常的设计
- 第36章 Unicode 和字节字符串
- 字符串基础知识
- Python 的字符串类型
- 文本和二进制文件
- Python 3.0 中的字符串应用
- 转换
- 编码 Unicode 字符串
- 编码非ASCII文本
- 编码和解码非ASCII文本
- 其他 Unicode 编码技术
- 转换编码
- 在 Python 2.6 中编码 Unicode 字符串
- 源文件字符集编码声明
- 使用 Python 3.0 Bytes 对象
- 序列操作
- 创建 bytes 对象的其他方式
- 混合字符串类型
- 使用 Python 3.0(和 Python 2.6)bytearray 对象
- 使用文本文件和二进制文件
- Python 3.0 中的文本和二进制模式
- 类型和内容错误匹配
- 使用 Unicode 文件
- 在 Python 3.0 中处理 BOM
- Python 2.6 中的 Unicode 文件
- Python 3.0 中其他字符串工具的变化
- Struct二进制数据模块
- pickle对象序列化模块
- XML解析工具
- 本章小结
- 本章习题
- 习题解答
- 第37章 管理属性
- 第38章 装饰器
- 第39章 元类
- 附录A 安装和配置
- 附录B 各部分练习题的解答
- 作者介绍
- 封面介绍
字典
作为内置类型,字典可以取代许多搜索算法和数据结构,而这些在较低级的语言中你可能不得不通过手工来实现。对字典进行索引是非常快速的搜索操作。字典有时也能执行其他语言中的记录、符号表的功能,可以表示稀疏(多数为空)数据结构等。Python字典的主要属性如下。
通过键而不是偏移量来读取
字典有时又叫做关联数组(associative array)或者是散列表(hash)。它们通过键将一系列值联系起来,这样就可以使用键从字典中取出一项。就像列表那样,同样可以使用索引操作从字典中获取内容。但是索引采取键的形式,而不是相对偏移。
任意对象的无序集合
与列表不同,保存在字典中的项并没有特定的顺序。实际上,Python将各项从左到右随机排序,以便快速查找。键提供了字典中项的象征性(而非物理性的)位置。
可变长、异构、任意嵌套
与列表相似,字典可以在原处增长或是缩短(无需生成一份拷贝)。它们可以包含任何类型的对象,而且它们支持任意深度的嵌套(可以包含列表和其他的字典等)。
属于可变映射类型
通过给索引赋值,字典可以在原处修改(可变),但不支持用于字符串和列表中的序列操作。实际上,因为字典是无序集合,所以根据固定顺序进行操作是行不通的(例如,合并和分片操作)。相反,字典是唯一内置的映射类型(键映射到值的对象)。
对象引用表(散列表)
如果说列表是支持位置读取的对象引用数组,那么字典就是支持键读取的无序对象引用表。从本质上讲,字典是作为散列表(支持快速检索的数据结构)来实现的,一开始很小,并根据要求而增长。此外,Python采用最优化的散列算法来寻找键,因此搜索是很快速的。和列表一样,字典存储的是对象引用(不是拷贝)。
表8-2总结了一些最为普通并具有代表性的字典操作[查看库手册或者运行dir(dict)或是help(dict)可以得到完整的清单,类型名为dict]。当写成常量表达式时,字典以一系列“键:值(key:value)”对形式写出的,用逗号隔开,用大括号括起来[1]。一个空字典就是一对空的大括号,而字典可以作为另一个字典(列表、元组)中的某一个值被嵌套。
[1]与列表相似,不会经常用常量创建字典。不过,列表和字典增长的方式不同。下一节我们将会看到,我们常常通过在运行时对新的键赋值来建立字典。这种方法对列表是不起作用的(列表通过append语句增长)。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论