集合字典的容器 - dictset的替代方案
项目描述
本包提供了一组基本是“集合字典”的集合,命名为MetaSet。
链接
在PyPI上的包:http://pypi.python.org/pypi/metaset/
在GitHub上的源代码:http://github.com/Polyconseil/metaset/
在Travis CI上的构建:http://travis-ci.org/polyconseil/metaset/
快速入门
使用pip从PyPI安装此包
pip install metaset
或从GitHub安装
git clone git://github.com/Polyconseil/metaset.git
在您的代码中导入它
>>> from metaset import MetaSet
用法非常直接,通过二元运算符 + - | ^ 支持基本的集合操作。
>>> from pprint import pprint
>>> pprint(MetaSet(a={1, 2}, b={3}) | MetaSet(b={4}, c={5}))
{'a': {1, 2}, 'b': {3, 4}, 'c': {5}}
Django Postgres
有一个自定义的Django字段可用。它非常简单
>>> from metaset.django_field import MetaSetField
>>> from django.db import models # doctest: +SKIP
>>> class MyModel(models.Model): # doctest: +SKIP
mset = MetaSetField() # doctest: +SKIP
以下版本的Python和Django受到支持
Python 2.7, 3.6, 3.7和3.8;
Django 1.11, 2.0, 2.1, 2.2, 3.0和3.1。
详细考虑
有两种考虑“集合字典”概念的方式,它们在如何处理键的空值方面有所不同。
最容易的想法是认为没有内容的键不存在。这就是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()}
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
metaset-2.0.0.tar.gz (5.6 kB 查看哈希值)
构建分发
metaset-2.0.0-py3-none-any.whl (5.5 kB 查看哈希值)
关闭
metaset-2.0.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a435189e355a009d6f584748fa45c2084902c8f6d734d5e83d66c786e7f90f00 |
|
MD5 | 98c559c666f52d5e704765ae605941b4 |
|
BLAKE2b-256 | d4944d409dae3d4fc2d5c583265fd00bf9857a45a5afe45aba49e307102d3157 |
关闭
metaset-2.0.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | faa8f8472b92e5838ad83b63a698d01eec0b2c95c18a49ad8d26b6d369e0b1c2 |
|
MD5 | d4bc7f84a1289c0de30a4b76aa98fbff |
|
BLAKE2b-256 | 67050d7c1685aaad761aa7476eae675bcd0c86bd102ae44c292e3417945fd9a0 |