A container for dicts of sets - alternative to dictset
Project description
This package provides a collection that is basically a “dict of sets”, named MetaSet.
Links
Package on PyPI: http://pypi.python.org/pypi/metaset/
Source on GitHub: http://github.com/Polyconseil/metaset/
Build on Travis CI: http://travis-ci.org/lionel-panhaleux/metaset/
Quickstart
Install the package from PyPI, using pip:
pip install metaset
Or from GitHub:
$ git clone git://github.com/lionel-panhaleux/metaset.git
Import it in your code:
from metaset import MetaSet
Usage is quite straight forward, basic set operations are supported via the binary operators + - | ^.
>>> MetaSet(a={1, 2}, b={3}) | MetaSet(b={4}, c={5})
{'a': {1, 2}, 'b': {3, 4}, 'c': {5}}
Detailed considerations
They are two ways to consider the “dict of sets” notion, differing on how you handle the empty values for keys.
The easiest idea is to consider that a key with no content is non-existent. This is how the dictset package is implemented.
In this alternative implementation, we chose to keep the empty keys as meaningful elements, allowing for smart unions and intersections.
>>> MetaSet(a={1}) | Metaset(a={2}, b=set())
{'a': {1, 2}, 'b': set()}
>>> MetaSet(a={1}) & Metaset(a={2}, b={3})
{'a': set()}
So, beware of how empty-keys are handled, and consider using dictset if it is a better match for your use case. The behavior for subtraction and symmetric difference, although sound on a mathematical point of view, may not be what you want.
>>> MetaSet(a={1}) - MetaSet(a={1})
{'a': set()}
>>> MetaSet(a={1}) ^ MetaSet(a={1})
{'a': set()}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for metaset-1.0.3-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c7a9c5b8eb75de3a0b2503f649c8dad0fe19fec9a27c21b2c99a9076164daaf |
|
MD5 | 7443ce4d12d6689498ac4cbdcaca3e89 |
|
BLAKE2b-256 | 3fe4195080425c78cc8021c7097e7df7520808c5f932020764f3058e1c3d5ebd |