跳转到主要内容

集合字典的容器 - dictset的替代方案

项目描述

本包提供了一组基本是“集合字典”的集合,命名为MetaSet。

Build status Supported Python versions Wheel status License

快速入门

使用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 查看哈希值)

上传时间: Python 3

支持者