Skip to main content

Utility data structures with simple but powerful features.

Project description

DictKit

A Python package that provides utility data structures with simple but powerful features, with a focus on flexibility and user experience.

UtilDict

A feature-enriched dictionary.

  • Access items with dot notation.
  • Flexible subscripting:
    • Get multiple items at once.
    • Set multiple items or the same value to multiple items at once.
  • Add items without mutating - return an updated copy
  • Drop items without mutating - return a filtered copy
  • Accepts a variety of argument types at creation.
  • Displays in nested format when printed.
  • Easy conversion to json format with .json()

Examples

from dictkit import UtilDict

# Like a dictionary...
ud = UtilDict(a=1, b=2, c=3)
print(ud)  # {'a': 1, 'b': 2, 'c': 3}

# ... but can be initialized from a variety of types
ud = UtilDict({"a": 1}, [("b", 2)], c=3)
print(ud)  # {'a': 1, 'b': 2, 'c': 3}

# Supports dot notation access
print(ud['a'])  # 1
print(ud.a)  # 1

# Get multiple items at once
selected_items = ud[["a", "c"]]
print(selected_items)  # {'a': 1, 'c': 3}

# Set multiple items at once
ud[["a", "c"]] = 10, 30
print(ud)  # {'a': 10, 'b': 2, 'c': 30}

# Set the same value to multiple keys at once
ud[["a", "c"]] = 99
print(ud)  # {'a': 99, 'b': 2, 'c': 99}

# Add items from a variety of types
ud2 = ud.add({"c": 3}, ("d", 4), e=5)
print(ud2)  # {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

# Add items from a 2-column dataframe
import pandas as pd
ud = UtilDict(a=1, b=2)
df = pd.DataFrame({"key": ["c", "d"], "value": [3, 4]})
ud2 = ud.add(df)
print(ud2)  # {'a': 1, 'b': 2, 'c': 3, 'd': 4}

# Drop multiple items at once
>>> ud3 = ud2.drop("a", "c")
>>> print(ud3)  # {'b': 2, 'd': 4}


render()

Somehow, this tool does not yet exist from any popular libraries.

Represents iterables in nested JSON structure, but with Python formatting.

>>> from dictkit.render import render
>>> dct = {'a':1, 'b': {'c':3}, 'list': [int,'b']}
>>> s = render(dct)
>>> s
{
   'a': 1,
   'b': {
      'c': 3
   },
   'list': [
      <class 'int'>,
      'b'
   ]
}

It handles multiline-formatted strings (like dataframes) elegantly, maintaining their original appearance.

>>> from pandas import DataFrame
>>> df = DataFrame([[1, 2, 3], [4, 55, 6]],
...                columns=["ONE", "TWO", "THREE"])
>>> fmt_str = '''|------|
... |      |
... |------|'''
>>> dct = {
...     "key": "value",
...     "formatted string": fmt_str,
...     "nested dct": {
...         "x": "y",
...         "dataframe": df,
...         "a": "b",
...         "formatted string": fmt_str
...     },
...     "lst": ['a', 'b'],
...     "tple": ('a','b')
... }
>>> render(dct, quote=False)
{
   key: value,
   formatted string:
      |------|
      |      |
      |------|,
   nested dct: {
      x: y,
      dataframe:
            ONE  TWO  THREE
         0    1    2      3
         1    4   55      6,
      a: b,
      formatted string:
         |------|
         |      |
         |------|
   },
   lst: [
      a,
      b
   ],
   tple: (
      a,
      b
   )
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dictkit-0.1.4.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

dictkit-0.1.4-py2.py3-none-any.whl (10.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file dictkit-0.1.4.tar.gz.

File metadata

  • Download URL: dictkit-0.1.4.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.2

File hashes

Hashes for dictkit-0.1.4.tar.gz
Algorithm Hash digest
SHA256 63c4bd94f953306749b83e82a378ac15b4509405c3b512fab3d1b37de7e2926f
MD5 652b6f6b43793d4723af23e2dfd4ac2f
BLAKE2b-256 3136b1934563e18f783836d8f24a009c8eeb5cd35877c7069bf9f3d10ea3450c

See more details on using hashes here.

Provenance

File details

Details for the file dictkit-0.1.4-py2.py3-none-any.whl.

File metadata

  • Download URL: dictkit-0.1.4-py2.py3-none-any.whl
  • Upload date:
  • Size: 10.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.2

File hashes

Hashes for dictkit-0.1.4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ecef12c51c8b331bfbc211fe5ab8d44f1492b0e9631983cc1d4c1edf29f2bc54
MD5 304f4f1eb773615e2ff1f409798cc5a6
BLAKE2b-256 81ce04d8cbb4f8378abec8e971e99e4a0872298a89c2e730b1b8eb42dd134fa6

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page