动态模式匹配库
py-matching-pattern的Python项目详细描述
Python模式匹配
受pampy和{a2}的启发,这是一个模式动态列表的模式匹配库。在
现在它只支持大小相同的匹配列表。在
使用
导入lib
importPatternMatchStorefrompy_matching_pattern
首先,您将添加initialize一个PatternMatchStore
,它有一个固定大小的键来匹配(列表的大小)。在
之后,您可以添加模式。每个值都是有效匹配,包括None
。在
“catch all”值是实例的default
属性。在
_=pmdb.defaultpmdb.put(keys=["a","b","c"],value=1)pmdb.put(keys=["a","b","b"],value=2)pmdb.put(keys=["a","b",_],value=3)pmdb.put(keys=["a",_,_],value=4)pmdb.put(keys=["a",None,"c"],value=5)pmdb.put(keys=["a",_,"d"],value=6)
这些模式是为数据库准备的。如果从另一个线程重新加载模式,这很有用。在
为了使模式有效,您需要提交它。在
pmdb.commit()
现在您终于可以开始匹配值了:
pmdb.get(keys=["a","b","c"])==1pmdb.get(keys=["a","b","b"])==2pmdb.get(keys=["a","b","d"])==3pmdb.get(keys=["a","c","d"])==4pmdb.get(keys=["a",None,"c"])==5pmdb.get(keys=["a","e","d"])==6pmdb.get(keys=["e","e","e"])==None
分段模式在提交之间保留,因此您可以稍后添加或重写它。在
但如果你想清理它:
pmdb.clean()
如果找不到异常,它也会引发异常,但默认情况下,它将返回None
:
pmdb=core.PatternMatchStore(keysize=3,raise_on_notfound=True)pmdb.get(keys=["e","e","e"])# raise KeyNotFound
许可证
麻省理工学院
- 项目
标签: