Skip to main content

A dict that works with both hashable and non-hashable keys

Project description

All Purpose Dict

Note: This document is best viewed on github. Pypi's headers are all caps which presents inaccurate information


Table of Contents


What is it?

  • A dict which doesn't require hashable keys

Why create it?

  • I often have a need to store non-hashable keys in a dict. For example storing a dict as a key isn't possible with the builtin dict.

    # doesn't work
    someDict = { "key": "value" }
    anotherDict = { someDict: "anotherValue" }
    

Simple usage

from all_purpose_dict import ApDict

someDict = { "key": "value" }
anotherDict = ApDict([(someDict, "anotherValue")])

print(someDict in anotherDict) # prints True

See Also


Api

Note: This api is young and subject to change quite a bit. There also may be functionality present in the builtin dict which ApDict doesn't cover. I'm willing to add it so please just raise a github issue or PR with details.

class ApDict([a list of pairs])

  • 'pairs' may be either a list or tuple with a length of 2
  • all methods return self unless specified otherwise
  • iterates in the order of insertion
  • views are not implemented because I don't have a need for them. Instead I expose keysIterator and valuesIterator. If you need views then raise a github issue.
  • the internal methods implemented are
    • __contains__
    • __delitem__
    • __getitem__
    • __iter__
    • __len__
    • __setitem__
clear()
delete(key)
  • a function alternative to del aDict[key]
get(key, default=None) => value
  • get the value for key if key is in the dictionary, else default.
  • note: this never raises a KeyError.
has(key) => bool
  • a function alternative to key in aDict
keysIterator() => ApDictKeysIterator
set(key, value)
  • a function alternative to aDict[key] = val
valuesIterator() => ApDictValuesIterator

Test

#
# you must have poetry installed
#
$ poetry shell
$ poetry install
$ python runTests.py

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

all_purpose_dict-0.1.5.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

all_purpose_dict-0.1.5-py3-none-any.whl (28.5 kB view details)

Uploaded Python 3

File details

Details for the file all_purpose_dict-0.1.5.tar.gz.

File metadata

  • Download URL: all_purpose_dict-0.1.5.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/0.12.11 CPython/3.7.3 Linux/5.0.6-arch1-1-ARCH

File hashes

Hashes for all_purpose_dict-0.1.5.tar.gz
Algorithm Hash digest
SHA256 0f9f387c6a4cf1e6efb0010e8158dc1082dbea00c9bdb6562aa09f4eac5daccf
MD5 710837a62ab322854fef2f39de564a68
BLAKE2b-256 48ebd17ab7d4e97d2b75d9083dc0791bb27caff5f42901876dacdbdaf3a302aa

See more details on using hashes here.

File details

Details for the file all_purpose_dict-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: all_purpose_dict-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 28.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/0.12.11 CPython/3.7.3 Linux/5.0.6-arch1-1-ARCH

File hashes

Hashes for all_purpose_dict-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 43850b6f185cde39b67160237625439a84cf6fbd0a097a68343dc4c2a0a81623
MD5 4e9a934a3d6fb04c11585e481ad126b1
BLAKE2b-256 d7aa3e4519d6721502f58d3057f8bf1e3e96e391ee76e59f7c16a6ff4d3039c7

See more details on using hashes here.

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