4.4.2 符号表客户端

一旦你获取到有关符号表的一些理念和体验,你将发现符号表的用途十分广泛。为了证明这个事实,我们将从两个典型的例子开始,它们均可以用于大量重要和熟悉的实际应用程序。

1. 字典查找

符号表最基本类型的客户端通过一系列连续的put操作来构建符号表以支持get请求。我们维护数据集合以便需要时可以快速访问数据。大多数应用程序还充分利用了“符号表是一个动态字典”的思想,不仅可以快速地从表中查找信息,而且还可以方便地更新表中的信息。如下列举并描述了该方法实际应用的几个熟悉例子。

·电话簿(黄页)。当键是人的姓名,值是该人相应的电话号码时,符号表建模了一个电话簿。与传统的印刷电话簿的主要区别在于,我们基于符号表的电话簿可以增加新的姓名,或者修改既存的电话号码。我们还可以把电话号码作为键,姓名作为相应的值。如果你从来没有尝试过,请在浏览器的搜索输入框中键入你的电话号码(带区号),按回车键尝试查询结果。

·字典。把一个单词与其定义关联起来是一种熟悉的概念,称为“字典”。几个世纪以来,人们在家里和办公室中放置印刷版字典以便查阅单词(键)的定义和拼写(值)。如今,由于性能良好的符号表的实现,人们可以期望在计算机上实现内置拼写检查和快速访问单词定义。

·账户信息。持有股票的用户常常会在Web上查看当前价格。Web上的若干服务把股票代码(键)与其当前价格(值)关联起来,通常还包含许多其他信息。此类商业应用程序比比皆是,包括金融机构把账户信息与姓名或账户号码关联起来,教育机构把学生姓名或身份证号码与学生成绩关联起来。

·基因组学。符号在现代基因组学中占据重要地位,我们在前文已经讨论过(具体可参见程序3.1.1)。最简单的例子是用字母A、C、T和G来表示生命有机体DNA(脱氧核糖核酸)中的核苷酸。还有一个简单的例子是密码子(核苷酸三连体)和氨基酸(TTA对应亮氨酸,TCT对应胱氨酸等)之间的对应关系,然后是氨基酸序列与蛋白质之间的对应关系等。基因组学的研究者通常使用不同类型的符号表来组织这类知识信息。 ...

Get 程序设计导论:Python语言实践 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.