python – 一次写字典?
发布时间:2020-12-20 12:30:44 所属栏目:Python 来源:网络整理
导读:我非常希望在 Python中有一个一次写入字典对象,所以: my_dict[1] = 'foo'my_dict[2] = 'bar'my_dict[1] = 'baz' # Raises KeyError 我可以想象做一个简单的,但我想知道是否存在一个更好的思路?我找不到一个. 解决方法 实现子类很容易: class WriteOnceDic
我非常希望在
Python中有一个一次写入字典对象,所以:
my_dict[1] = 'foo' my_dict[2] = 'bar' my_dict[1] = 'baz' # Raises KeyError 我可以想象做一个简单的,但我想知道是否存在一个更好的思路?我找不到一个. 解决方法
实现子类很容易:
class WriteOnceDict(dict): def __setitem__(self,key,value): if key in self: raise KeyError('{} has already been set'.format(key)) super(WriteOnceDict,self).__setitem__(key,value) 您还可以提供自定义update()方法,并且根据您希望的严格程度,__ delitem __(),pop(),popitem()和clear()也可能需要重写. 对于超严格版本,在 from collections import MutableMapping class StrictWriteOnceDict(MutableMapping,dict): # dict implementations to override the MutableMapping versions __getitem__ = dict.__getitem__ __iter__ = dict.__iter__ def __delitem__(self,key): raise KeyError('Read-only dictionary') def __setitem__(self,value): if key in self: raise KeyError('{} has already been set'.format(key)) dict.__setitem__(self,value) 允许删除就像用__delitem__ = dict .__ delitem__替换__delitem__方法一样简单. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |