集合的dicts的容器-dictset的替代品
metaset的Python项目详细描述
这个包提供了一个集合,它基本上是一个“集合的dict”,名为metaset。
链接
快速启动
使用pip:
pip install metaset
或来自github:
git clone git://github.com/Polyconseil/metaset.git
导入代码:
>>>frommetasetimportMetaSet
用法很直接, 通过二进制运算符+-|^支持基本集合操作。
>>>frompprintimportpprint>>>pprint(MetaSet(a={1,2},b={3})|MetaSet(b={4},c={5})){'a':{1,2},'b':{3,4},'c':{5}}
django postgres
可使用自定义django字段。 很简单:
>>>frommetaset.django_fieldimportMetaSetField>>>fromdjango.dbimportmodels# doctest: +SKIP>>>classMyModel(models.Model):# doctest: +SKIPmset=MetaSetField()# doctest: +SKIP
它与以下版本兼容:
- django 1.11,python 2.7
- django 2.1,python 3.6
详细注意事项
它们是两种考虑“集合论”概念的方法, 在如何处理键的空值上有所不同。
最简单的想法是认为没有内容的密钥是不存在的。 这就是dictset包的实现方式。
在这个替代的实现中, 我们选择保留空键作为有意义的元素, 允许智能工会和交叉路口。
>>>pprint(MetaSet(a={1})|MetaSet(a={2},b=set())){'a':{1,2},'b':set()}>>>MetaSet(a={1})&MetaSet(a={2},b={3}){'a':set()}
所以,当心如何处理空钥匙, 如果它更适合您的用例,请考虑使用dictset。 减法和对称差分的行为, 虽然从数学的角度来看,可能不是你想要的。
>>>MetaSet(a={1})-MetaSet(a={1}){'a':set()}>>>MetaSet(a={1})^MetaSet(a={1}){'a':set()}