Python中不可变的字典(映射类型)。

不可变映射类型

在有些场景中,比如不能用用户错误的修改某个映射,所以需要一种不可变的字典。

在Python3.3开始,types模块中新增了一个封装类MappingProxyType

给这个类一个映射,他会返回一个只读的映射视图。虽然这个视图是只读的,但是动态的,意思是如果修改了原映射对象,这个映射视图也能够改变,但是无法直接修改映射视图。

 

 

from types import MappingProxyType


a_dict = {'x': 1, 'y': 2}
a_view = MappingProxyType(a_dict)
print(a_view)  # 打印视图,看到就是一个普通的字典
a_dict['z'] = 3
print(a_view)  # 映射视图也会改变
a_view['p'] = 4  # 会报错! 因为映射视图不可修改
打印
{'x': 1, 'y': 2}
{'x': 1, 'y': 2, 'z': 3}
Traceback (most recent call last):
  File "D:/PycharmProjects/hello/test2.py", line 12, in <module>
    a_view['p'] = 4
TypeError: 'mappingproxy' object does not support item assignment
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值