跳轉到內容

資料結構基礎:字典

來自華夏公益教科書,開放的書籍,開放的世界

論文 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])
華夏公益教科書