数据结构基础:字典
外观
字典是一种通用的数据结构,用于存储一组对象。字典有一组键,每个键都有一个关联的值。当提供一个键时,字典将返回关联的值。
例如,课堂测试的结果可以用字典来表示,学生的姓名作为键,他们的分数作为值。
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])
|