Skip to content

mariushelf/bcdict

Repository files navigation

Tests codecov PyPI version Documentation Status pre-commit Downloads

Broadcast Dictionary

Python dictionary with broadcast support.

Behaves like a regular dictionary.

Allows to apply operations to all its values at once. Whithout loops, whithout dict comprehension.

Installation

pip install bcdict

Usage

from bcdict import BCDict
>>> d = BCDict({"a": "hello", "b": "world!"})
>>> d
{'a': 'hello', 'b': 'world!'}

Regular element access:

>>> d['a']
'hello'

Regular element assignments

>>> d['a'] = "Hello"
>>> d
{'a': 'Hello', 'b': 'world!'}

Calling functions:

>>> d.upper()
{'a': 'HELLO', 'b': 'WORLD!'}

Slicing:

>>> d[1:3]
{'a': 'el', 'b': 'or'}

Applying functions:

>>> d.pipe(len)
{'a': 5, 'b': 6}

When there is a conflict between an attribute in the values and an attribute in BCDict, use the attribute accessor explicitly:

>>> d.a.upper()
{'a': 'HELLO', 'b': 'WORLD!'}

Slicing with conflicting keys:

>>> n = BCDict({1:"hello", 2: "world"})
>>> n[1]
'hello'
>>> # Using the attribute accessor:
>>> n.a[1]
{1: 'e', 2: 'o'}

Next steps

See the introduction notebook and other examples.

Also check out the full documentation on bcdict.readthedocs.io.

Changelog

v0.5.0

  • feature: broadcast attribute and item assignment
  • fix: broadcast slicing with .a accessor

v0.4.3

  • fix: unpickling causes recursion error

v0.4.2

  • docs: improve the documenation

v0.4.1

  • fix: sphinxcontrib-mermaid gets installed as default dependency, should be dev dependency

v0.4.0

  • new functions eq() and ne() for equality/inequality with broadcast support

v0.3.0

  • new functions in bcdict package:
    • apply()
    • broadcast()
    • broadcast_arg()
    • broadcast_kwarg()
  • docs: write some documentation and host it on readthedocs

v0.2.0

  • remove item() function. Use .a[] instead.

v0.1.0

  • initial release

Original repository: https://github.com/mariushelf/bcdict

Author: Marius Helf (helfsmarius@gmail.com)