資料結構基礎:字典
外觀
字典是一種通用的資料結構,用於儲存一組物件。字典有一組鍵,每個鍵都有一個關聯的值。當提供一個鍵時,字典將返回關聯的值。
例如,課堂測試的結果可以用字典來表示,學生的姓名作為鍵,他們的分數作為值。
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])
|