在 Python 中如何快速创建一个只读字典?
不少人喜欢在 Python 项目中,使用字典来存放各种数据。虽然这不是一个好习惯,但是对于少量数据来说,用字典无疑是最简单方便的做法。但前提是,不要一不小心把字典里面的值给覆盖了。
我们知道,当我们向字典添加数据的时候:
a = {'name': 'kingname', 'salary': 99999}a['address'] = '上海'
当我们读取字典的时候,一般写作:
a['address']
所以在代码里面,确实存在一不小心把字典覆盖了的情况,例如:
is_rich_man = a['salary'] == 99999
正常情况下,is_rich_man应该等于 True 或者 False。但如果漏写了一个等号,变成:
is_rich_man = a['salary'] = 99999
那么,字典里面的数据就会被覆盖。但代码并不会报错,如下图所示:
所以,我们是否有什么办法,实现一个一旦初始化,就不能修改的字典呢?
实际上 Python自带了这个功能,就是types.MappingProxyType。使用它,可以轻易实现一个不能修改的字典:
from types import MappingProxyTypeinfo = {'name': 'kingname', 'salary': 99999}safe_info = MappingProxyType(info)print('kingname 的月薪是:', safe_info['salary'])safe_info['salary'] = 0
运行效果如下图所示: