跳转到内容

数据结构基础:字典

来自维基教科书,开放的书籍,开放的世界

论文 1 - ⇑ 数据结构基础 ⇑

← 哈希表和哈希函数 字典 向量 →


字典是一种通用的数据结构,用于存储一组对象。字典有一组,每个键都有一个关联的。当提供一个键时,字典将返回关联的值。

例如,课堂测试的结果可以用字典来表示,学生的姓名作为键,他们的分数作为值。

results = {'Detra' : 17,
           'Nova' : 84,
           'Charlie' : 22,
           'Henry' : 75,
           'Roxanne' : 92,
           'Elsa' : 29}

我们可以使用字典的名称来返回值,而不是使用数据的数字索引。

>>> results['Nova']
84
>>> results['Elsa']
29

字典在不同的编程语言中也称为哈希映射哈希映射(以及 JavaScript 中的 Object)。它们都是一样的:一个键值存储。

键值存储的概念广泛应用于各种计算系统,如缓存和高性能数据库。

通常,字典中的键必须是简单类型(如整数或字符串),而值可以是任何类型。不同的语言对字典中的键和值施加不同的类型限制。字典通常用哈希表来实现。

字典中的键必须是唯一的;尝试创建重复的键通常会覆盖该键的现有值。

请注意,字典中不存在键与键存在但其对应值为 null 之间存在差异(这可能很重要)。

与类似数据结构的区别

[编辑 | 编辑源代码]
数组
数组和字典都存储数据集合,但它们是如何访问数据的不同。数组中的项目按位置(通常是一个数字)访问,因此它们具有顺序。字典中的项目按键访问,并且无序。
集合
集合是一组项目,无序且去重。字典的键形成了一个集合,但每个键都有一个关联的值;这些值可以在字典中重复。

字典的主要操作

[编辑 | 编辑源代码]

字典通常支持不同的操作

  • 检索值(取决于语言,尝试检索丢失的键可能会给出默认值或抛出异常)
  • 插入或更新值(通常,如果键不存在于字典中,则插入键值对;如果键已存在,则其对应值将被新的值覆盖)
  • 删除键值对
  • 测试键是否存在

大多数具有字典的编程语言还将支持遍历字典中的键或值。请注意,字典中的项目是无序的,因此遍历字典的循环将以任意顺序返回项目。

给定一个名为 results 的字典,其中包含上面的课堂结果,以下是这些操作的示例

操作 VB.net Python 3
检索
results("Nova")
results['Nova']
插入
results.Add("Nova", 99)
results['Nova'] = 99
删除
results.Remove("Nova")
del results['Nova']
键是否存在
results.ContainsKey("Nova")
'Nova' in results
遍历字典
For Each kvp As KeyValuePair(Of String, Integer) In results
    Console.WriteLine(kvp.Key, kvp.Value)
for pupil in results:
    print(pupil, results[pupil])
华夏公益教科书