字典元素的增删改

字典对象创建以后,可以对对象进行添加键值对、修改键或值或者删除指定键值对等操作。本节使用8.2.1小节创建的字典对象dicT和dt进行演示。

向字典增加元素

创建字典对象以后,可以向字典对象中添加键值对。

【Excel VBA】

Excel VBA中使用字典对象的Add方法添加键值对,该方法的语法格式为:

code.vba
dic.Add key, item

其中,dic为字典对象;第1个参数key为键,第2个参数item为键对应的值。注意,字典中的键在所有键中必须是唯一的。

下面向字典对象dicT中添加一个键值对,键为"No010",值为"田欣"。示例文件的存放路径为Samples\ch08\Excel VBA\字典元素的增删改.xlsm。

code.vba
dicT.Add "No010","田欣"

默认时字典对象中的键名是区分大小写的,即键名"No010"和"no010"会被视为两个不同的名称。如果要求键名有大小写区分,需要将字典对象的CompareMode属性的值设置为1。值为1时键名不区分大小写,值为0时区分大小写。

code.vba
dicT.CompareMode=1

【Python】

向字典对象dt中添加新的键值对:

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

也可以使用字典对象的update方法添加键值对。

code.python
>>> dt.update({'No010':'田欣'})    #添加键值对

修改键和值

下面修改字典对象中的键。

【Excel VBA】

Excel VBA中使用字典对象的Key属性可以直接修改原有的键。下面将字典对象dicT中的键"No001"修改为"No004"。示例文件的存放路径为Samples\ch08\Excel VBA\字典元素的增删改.xlsm。

code.vba
dicT.Key("No001") = "No004"

【Python】

Python中不能直接修改字典的键,所以,对于要修改键的键值对,用它的值和新的键名一起组成一个新的键值对添加到字典中,再把原来的键值对删除。下面将字典对象dicT中的键"No001"改为"No004"。

首先添加一个键为"No004"的键值对,值为键"No001"对应的值。然后删除"No001"对应的键值对。

code.python
>>> dt['No004']=dt['No001']
>>> del dt['No001']

查看字典对象中所有的键值对。

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

下面修改字典对象中的值。

【Excel VBA】

Excel VBA中使用字典对象的Item方法修改指定键对应的值。下面将字典对象dicT中第1个键的值改为"王东"。示例文件的存放路径为Samples\ch08\Excel VBA\字典元素的增删改.xlsm。

code.vba
dicT.Item("No001")="王东"

【Python】

Python中修改指定键对应的值,在字典对象后面用中括号([])指定键名,在后面指定新的值。下面将字典对象dt中第1个键的值改为"王东"。

code.python
>>> dt['No001']='王东'

也可以使用字典对象的update方法修改键值对。

code.python
>>> dt.update({'No001':'王东'})
>>> dt
{'No001': '王东', 'No002': '大谦', 'No003': '马忠'}

删除字典元素

【Excel VBA】

Excel VBA中使用字典对象的Remove方法从字典中删除一个键值对,使用该方法时指定键,语法格式为:

code.vba
dic.Remove(key)

其中,dic为字典对象;key为键名。如果指定的键不存在,会出错。

使用字典对象的RemoveAll方法可以清空字典。

【Python】

Python中使用del命令删除字典中的键值对。

code.python
>>> del dt['No001']
>>> dt
{'No002': '大谦', 'No003': '马忠'}

将指定的键作为函数参数,使用字典对象的pop方法删除指定键值对。该方法返回指定键对应的值。

code.python
>>> dt2=dt.pop('No001')
>>> dt2
'朱晓琳'
>>> dt
{'No003': '马忠'}

使用字典对象的clear方法清空字典中的所有键值对。

code.python
>>> dt.clear()
>>> dt
{}