随写词典
cowdict的Python项目详细描述
cowdict是一个python模块,它在字典上实现了按写拷贝模式。
这意味着如果有人更改dict-like对象,原始对象不会被更改,但是 这些差异将被追踪。
坚果壳
下面是一个小例子:
base_dict={"foo":"bar"}cd=CowDict(base_dict)cd["foo"]="baz"print(base_dict["foo"])# will still print 'bar'print(cd["foo"])# will print 'baz'
cowdict对象(cd在上面的代码中)实现了可变映射接口,简单地说它有 与dict对象的接口相同。
这意味着可以保证更改此对象上的键/值不会导致 基础字典(示例中的基本字典)。
理念
这个模块背后的思想是避免在可能的地方复制字典,而是使用这个包装类。 虽然它对密钥查找和长度计算的性能有一定的影响,但是内存占用可以 保持最低限度(与字典的完整副本相比)。
幕后
在幕后,新的项目被添加到一个单独的目录中。基字典上存在的键是 通过保持一个关于已删除键的单独set对象来“deleted”。 每次通过getitem或items或其他方法访问密钥时, 这些额外的结构会产生正确的结果。
虽然假设基本字典是只读的,这会使世界变得更容易,尤其是 在计算对象的长度时,库处理基本字典更改时的情况。