![Python+Excel办公自动化一本通](https://wfqqreader-1252317822.image.myqcloud.com/cover/221/40795221/b_40795221.jpg)
6.2 访问字典
访问字典包括访问字典的值、新增/修改字典的值、删除字典键值、删除整个字典等,下面分别进行介绍。
6.2.1 访问字典的值
访问字典的值很简单,主要的格式是“dict_name[key]”,下面进行演示,代码如下:
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/108-2.jpg?sign=1739436097-dHz2AULH75mD5kdAyEQlmMNcohyoMcYg-0-b2073ea4094589796790488db7eb5b46)
加粗的代码就是访问字典的值,其中"x"和"y"是字典的键。但是给出的键可能是不存在的,如果运行就会发生异常,如下所示:
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/108-3.jpg?sign=1739436097-uFrR31ruxTxoClhE6nDniz3lfUSuV99z-0-b2376d164718071b98c6f6844e163846)
运行上述代码得到的输出结果如下:
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/108-4.jpg?sign=1739436097-smgtrxek3TOHVqN6XGEXOGDw28g6rhh6-0-19775ba977c227420ace1bafa756b039)
因此,使用字典一定要确定字典中存在对应的键才能这样访问。如果不能确定是否一定存在对应键,那么应该考虑使用if语句判断在字典中该键是否存在,下面通过代码清单6-2进行演示。
代码清单6-2:判断字典中是否存在某个键
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/108-5.jpg?sign=1739436097-lzpLQgSoard1WjgdsvujjAENeCKqEe0P-0-c2794e216b54d8df7e8c881acbc021b0)
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/109-1.jpg?sign=1739436097-YCnyiHLxLJgzTCHwpHw8if5JfQjrcB9b-0-800e539208d1c8d5eddfa5487f03be65)
这里值得注意的是in关键字,它会帮助我们判断该字典中是否存在对应的键。
如果获取一次值就要编写if语句,就会比较麻烦。为了更简单地处理访问的问题,可以使用字典提供的get函数来访问字典的值。
代码清单6-3:使用字典提供的get函数访问字典的值
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/109-2.jpg?sign=1739436097-RSgdH7lYFpFSEtNrikz3K1PBFLNHGZ7R-0-3fdfc6df5bd5f3d4b8fc3c2b2505c956)
get函数包含两个参数:一个是字典的键;另一个是默认值,在默认情况下是None。根据get函数的特性,在代码①处,在字典不存在键"z"的情况下会返回None;而在代码②处指定了在不存在键"z"的情况下默认返回值为"N/A",因此此处返回的是"N/A"。运行上述代码得到的输出结果如下:
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/109-3.jpg?sign=1739436097-JgprMpWq5PXWT9FJGoFKqQzXxjaXb0TV-0-48b2b95959c658018b21b5e76069ce07)
注意 如何选择访问字典值的方式
上面介绍了3种访问字典值的方式,通过if语句判断会增加代码冗余度,因此不应该考虑使用这种方式,这样就只能通过“dict_name[key]”和get函数访问字典值。
如果能够确保键在字典中一定存在,则选择“dict_name[key]”方式,否则使用get函数。因为从可读性的角度来说,“dict_name[key]”方式更加直观,能让开发者更直观地知道访问的是一个字典,但是这种方式的缺点是会因为不存在键而产生运行错误。使用get函数的可读性虽然不高,但是能避免不存在键的运行错误。
下面通过代码说明:
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/109-4.jpg?sign=1739436097-LOxzkJUDFCivucFXODqVotiUo9DmPfru-0-541903bef3e497446bb36cc8a008d7ba)
6.2.2 新增/修改字典的值
通过键可以轻松地新增或修改字典的值,如代码清单6-4所示。
代码清单6-4:新增和修改字典的值
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/109-5.jpg?sign=1739436097-edWAqP32CKNvxOwdDwsFXiKiwFqij62b-0-24097b3053f39a83cb435c7120161a53)
在字典中,值是通过键来索引的,因此只要像代码①处和代码②处那样为字典赋值即可。在赋值时字典会自动判断该键在字典中是否存在,如果在字典存在,则修改原来的值,如果在字典中不存在,则新增键值。
有时需要通过if语句判断字典中是否存在对应的键,然后进行操作,如果不存在对应的键就什么也不做,如下所示:
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/110-2.jpg?sign=1739436097-GvQcQsFSJuV9En6C0Lhb4LuTnR9KlwOB-0-472052357812c13dbe65c1d74b5a8d6d)
这里的两条if语句就是为了判断字典中是否存在对应的键,如果不存在则什么都不做,如果存在才会赋值,这样就能够达到我们的要求。
6.2.3 删除
删除分为删除字典键值和删除字典本身。删除字典键值又可以分为删除键值、弹出键值和清空字典,而删除字典本身就是使用关键字del从内存变量表中删除字典的引用,使字典变量在后续代码中不能再使用。下面通过代码清单6-5来说明。
代码清单6-5:字典的删除
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/110-3.jpg?sign=1739436097-QBtkG8f84zxx3ZFDXm0kryRnmHa3YwV3-0-b9101bea2e1bae5d3eda30f1b8e7db51)
![](https://epubservercos.yuewen.com/569A18/21190709001167706/epubprivate/OEBPS/Images/111-1.jpg?sign=1739436097-3RnjF62g78fwhRAqZYYfrRX2oBSiZJ5i-0-632b681c7956d9bd6f56bff4229fba55)
代码①处是删除字典中的某个键;代码②处是弹出字典中的某个键,并返回其值;代码③处是随机弹出字典中的某个键值对;代码④处是清空字典;代码⑤处是删除变量my_dict。