revisiondict的工作方式类似于一本普通的字典,它有附加的修订功能来保存更改。
revisiondict的Python项目详细描述
revisiondict的工作方式类似于一本普通的字典,它有附加的修订功能来保存更改。它记得当 键被更新(与OrderedDict相反,后者在插入键时记住顺序。
它是对整个字典的修订跟踪,但不存储字典中每个键的每个较早值。 它基本上回答了以下问题:
- 实际修订号是多少?
- 自版次号n以来发生了什么变化?
- 上次在哪个修订版中更改了键k的值?
使用revisiondict构建缓存系统,将多个客户端连接到一个公共数据库, 发布/订阅系统,…
与dict()相比的附加功能:
- .revision-以整数形式返回实际修订(从0开始)
- .base_revision-最旧项更改前的修订(或空dict上的0)
- .key_to_revision(key)-当给定的键被更改时返回修订版
- .checkout(start=0)-返回一个dict,其中包含自start
安装
pip install revisiondict
示例
>>> d=RevisionDict() >>> d.revision # get revision (is 0 at init) 0 >>> d.base_revision # get revision before oldest change 0
添加新项目:
>>> d['a']=0; d['b']=1; d['c']=2 # make three updates >>> d.revision # showing 3 changes 3 >>> d.base_revision # get revision before oldest change 0
审校内容检查:
>>> d.checkout()=={'a': 0, 'b': 1, 'c': 2} # get a dictionary with all changes True >>> d.checkout(2) # get all changes starting with rev. 2 {'c': 2} >>> d.checkout(3) # all changes starting with actual revision {} >>> d.key_to_revision('b') # revision where 'b' was changed last time 2 >>> d RevisionDict([_Item(key='a', value=0, revision=1), _Item(key='b', value=1, revision=2), _Item(key='c', value=2, revision=3)])
更新项目:
>>> d['a']=3 # update value of 'a' (was 0 before) >>> d.revision 4 >>> d.base_revision 1 >>> d.key_to_revision('a') 4 >>> d.checkout(3) # get all changes starting with rev. 3 {'a': 3} >>> tuple(d.keys()) # iterate over keys (ordered by time of update) ('b', 'c', 'a')