字典元素的索引

键值对添加到字典中以后,如果需要对其中的某个或某些键值对进行处理,首先需要将它们从字典中找出来,这就是字典元素的索引。

获取键和值

字典的元素由键值对组成,有键和值两个部分,所以字典元素的索引包括键的索引和值的索引。

首先创建字典对象并添加键值对。示例文件的存放路径为Samples\ch08\Excel VBA\字典元素的索引.xlsm。

【Excel VBA】

code.vba
Sub Test()
  Dim dicT As Scripting.Dictionary
  Set dicT = New Scripting.Dictionary
  dicT.Add "No001", "刘丹"
  dicT.Add "No002", "大谦"
  dicT.Add "No003", "马忠"
End Sub

【Python】

code.python
>>> dt={'No001':'刘丹', 'No002':'大谦', 'No003':'马忠'}

本节下面下面的内容基于上面创建的字典对象进行介绍。

首先介绍键的索引。

【Excel VBA】

在Excel VBA中使用字典对象的Keys方法可以获取字典的全部键,以数组的形式返回。对数组进行索引,可以获取指定的键。

在上面的Test过程中添加下面的代码,字典对象dicT的所有键返回到数组arr。示例文件的存放路径为Samples\ch08\Excel VBA\字典元素的索引.xlsm。

code.vba
Dim arr()
Dim intI As Integer
arr = dicT.Keys
For intI = 0 To UBound(arr)  '输出所有键
   Debug.Print arr(intI) & vbTab;
Next
Debug.Print
Debug.Print arr(0)  '输出第1个键

运行过程,在立即窗口中输出下面的结果:

code.vba
No001   No002   No003
No001

输出结果中第1行输出所有键,第2行输出第1个键。

【Python】

Python中用字典对象的keys方法获取所有键。下面获取字典对象dt的所有键。

code.python
>>> kys=dt.keys()

keys方法返回的是dict_keys类型的数据,将它转换为列表。

code.python
>>> lkys=list(kys)  #转换为列表

遍历列表,输出所有键。

code.python
>>> for ky in lkys:
        print(ky)

输出结果为:

code.python
No001
No002
No003

获取第1个键:

code.python
>>> lkys[0]
'No001'

下面介绍值的索引。

【Excel VBA】

在Excel VBA中使用字典对象的Items方法获取字典的全部值,以数组的形式返回。对数组进行索引,可以获取指定的值。

在Test过程中添加下面的代码,字典对象dicT的所有值返回到数组arr2,在立即窗口中输出第1个值。示例文件的存放路径为Samples\ch08\Excel VBA\字典元素的索引.xlsm。

code.vba
Dim arr2()
arr2 = dicT.Items
Debug.Print arr2(0)  '输出第1个值

运行过程,在立即窗口中输出下面的结果:

code.vba
刘丹

【Python】

Python中用字典对象的values方法获取所有值。下面获取字典对象dt的所有值。

code.python
>>> val=dt.values()
>>> val
dict_values(['刘丹', '大谦', '马忠'])

获取第1个值。

code.python
>>> list(val)[0]
'刘丹'

也可以根据指定的键获取对应的值。

【Excel VBA】

在Excel VBA中使用字典对象的Item属性,指定键作为该属性的参数,获取对应的值。在Test过程中添加下面的代码,获取键"No001"对应的值。示例文件的存放路径为Samples\ch08\Excel VBA\字典元素的索引.xlsm。

code.vba
Debug.Print dicT.Item("No001")

运行过程,在立即窗口中输出下面的结果:

code.vba
刘丹

【Python】

Python中在字典名称后面跟中括号([]),在括号内输入键的名称,可以获取该键对应的值。下面获取字典对象dt中键"No001"对应的值。

code.python
>>> dt['No001']
'刘丹'

使用字典对象的get方法也可以获得相同的结果:

code.python
>>> dt.get('No001')
'刘丹'

【Python】

Python中使用字典对象的items方法可以获取所有键值对。

code.python
>>> dt.items()
dict_items([('No001', '刘丹'), ('No002', '大谦'), ('No003', '马忠')])

键在字典中是否存在

由于要求字典中的键在字典的所有键中必须是唯一的,所以经常有必要判断指定的键在字典中是否已经存在。这里使用8.2.1小节创建的字典对象dicT和dt进行介绍。

【Excel VBA】

Excel VBA中用字典对象的Exists方法进行判断,如果存在,返回True,否则返回False。下面在Test过程中添加下面的代码,判断字典对象dicT中是否存在键"No001"。示例文件的存放路径为Samples\ch08\Excel VBA\字典元素的索引.xlsm。

code.vba
Debug.Print dicT.Exists("No001")

运行过程,在立即窗口中输出下面的结果:

code.vba
True

【Python】

Python中使用in或not in运算符判断字典中是否包含或不包含指定的键,包含时返回True,否则返回False。

code.python
>>> 'No001' in dt
True
>>> 'No002' not in dt
False