revisiondict的工作方式类似于一本普通的字典,它有附加的修订功能来保存更改。

revisiondict的Python项目详细描述


https://img.shields.io/pypi/v/revisiondict.svghttps://img.shields.io/travis/semiversus/python-revisiondict.svghttps://codecov.io/gh/semiversus/python-revisiondict/branch/master/graph/badge.svghttps://img.shields.io/github/license/semiversus/python-revisiondict.svg

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')

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

推荐PyPI第三方库


热门话题
java使用split函数分割字符串,但没有得到期望的结果   未找到包含derby数据库嵌入架构的sql Java桌面应用程序错误   java elasticsearch vs solr用于定制全文搜索系统   java Android:创建没有startOffset的动画延迟?   java如何查看其他应用程序接收的数据?   java如何在Linux中使用D和classpath选项运行jar文件   java和域设计最佳实践   具有相同内存位置的java数组,将显示为输出   连接到java中的elasticsearch?   Java Playframework重定向到带有Json负载的外部url   java无法在Android平台上使用InputStream为蓝牙socket创建ObjectInputStream   使用POI将Excel日期转换为Java日期,年份未正确显示   oracle从数据库层还是Java层调用webservice?