一、字典基礎知識
字典是一種基於鍵值對存儲數據的對象,也稱鍵值對集合。每個鍵值對表示一組相關的數據,它由一個鍵和一個值組成。鍵在字典中必須唯一,而值則可以重複。在VBA中,可以使用「Scripting.Dictionary」類創建字典對象。
Dim myDict As New Scripting.Dictionary
以上代碼使用「New」關鍵字和「Scripting.Dictionary」類創建了一個名為「myDict」的字典對象。
二、字典相關操作
1. 添加鍵值對
在字典中,可以使用「Add」方法添加鍵值對,其語法為:
myDict.Add Key, Value
其中,Key和Value為要添加的鍵值對。在實際使用中,可以用循環結構讀入數據並依次添加到字典中,示例如下:
For i = 1 To 5 myDict.Add i, "Value " & i Next i
2. 刪除鍵值對
使用「Remove」方法可以刪除指定鍵值對,其語法為:
myDict.Remove Key
其中,Key為要刪除的鍵。以下代碼刪除了字典中鍵值為「2」的鍵值對:
myDict.Remove 2
3. 修改鍵值對
在字典中,可以直接修改已經存在的鍵值對。以修改鍵值為「3」的鍵值對為例:
myDict(3) = "New Value"
4. 查找鍵值對
使用字典的「Exists」方法可以判斷指定鍵是否存在,其語法為:
myDict.Exists Key
若指定的鍵存在,則返回True;反之,則返回False。
有時需要根據值查找對應的鍵,可以使用「Keys」方法返回所有鍵值,然後根據值進行遍歷比較,找到匹配的鍵。以下代碼查找值為「Value 3」的鍵:
For Each key In myDict.Keys If myDict(key) = "Value 3" Then MsgBox "Key: " & key Exit For End If Next key
三、字典應用案例
1. 統計詞頻
字典可以很好地實現文本詞頻統計。以下代碼讀入文本數據,統計每個單詞出現的次數,並將結果存儲在字典中:
Dim myDict As New Scripting.Dictionary Dim text As String Dim words() As String ' 讀入文本數據 text = "The quick brown fox jumped over the lazy dog. The dog slept over the veranda." words = Split(text, " ") ' 統計單詞詞頻 For i = 0 To UBound(words) If Not myDict.Exists(words(i)) Then ' 不存在,則添加 myDict.Add words(i), 1 Else ' 存在,則累加 myDict(words(i)) = myDict(words(i)) + 1 End If Next i
通過以上代碼,可以得到每個單詞出現的次數,並進行其他後續操作,如排序、篩選等。
2. 存儲自定義對象
字典不僅可以存儲基本數據類型,還可以存儲自定義對象。以下代碼演示了如何將員工對象存儲到字典中:
' 定義員工對象 Class Employee Public Name As String Public Age As Integer End Class ' 創建字典對象 Dim myDict As New Scripting.Dictionary ' 創建員工對象 Dim e1 As New Employee e1.Name = "Jack" e1.Age = 30 Dim e2 As New Employee e2.Name = "Lucy" e2.Age = 25 ' 將員工對象添加到字典中 myDict.Add "Jack", e1 myDict.Add "Lucy", e2
通過以上代碼,可以將多個員工對象存儲在同一個字典對象中,並以姓名為鍵進行快速查找和訪問。
3. 計算平均數
字典可以方便地計算多個數值的平均值。以下代碼演示了如何利用字典實現數組元素平均值的計算:
' 定義數組 Dim numbers() As Double numbers = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) ' 計算元素平均值 Dim sum As Double Dim myDict As New Scripting.Dictionary For i = 0 To UBound(numbers) sum = sum + numbers(i) Next i Dim avg As Double avg = sum / (UBound(numbers) + 1) ' 將元素與平均值偏差添加到字典中 For i = 0 To UBound(numbers) myDict.Add i, numbers(i) - avg Next i
以上代碼先計算數組元素的平均值,然後將每個元素與平均值的偏差添加到字典中,偏差可用於後續統計分析。
原創文章,作者:VTKBF,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/335041.html