随写词典

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”。 每次通过getitemitems或其他方法访问密钥时, 这些额外的结构会产生正确的结果。

虽然假设基本字典是只读的,这会使世界变得更容易,尤其是 在计算对象的长度时,库处理基本字典更改时的情况。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java类。getResource和ClassLoader。getSystemResource:有没有理由选择其中一个而不是另一个?   在Java中以编程方式粘贴后恢复剪贴板   Java字符串到日期没有时间   JavaSpring注释:@Component起作用,@Repository不起作用   java“addScript”在HSQL中是否有最大记录计数?   java如何将值从JDialog框返回到父JFrame?   java我的模块库的用户有没有办法访问尚未导出的类?   java javac:未找到命令   java如何解决jsoup错误:无法找到请求目标的有效证书路径   类中的java作用域变量   Java中集合实现中的arraylist add()方法不起作用   java如何使用while循环和从用户接收输入来近似Pi?   java Spring安全CSRF培训模式   在安卓系统中,如何通过在警报框外单击来限制用户?