A dict that works with both hashable and non-hashable keys
Project description
All Purpose Dict
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
andvaluesIterator
. 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
getKeysIterator() => ApDictKeysIterator
set(key, value)
- a function alternative to
aDict[key] = val
getValuesIterator() => ApDictValuesIterator
Test
#
# you must have poetry installed
#
$ poetry shell
$ poetry install
$ python runTests.py
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 Distribution
all_purpose_dict-0.2.4.tar.gz
(178.9 kB
view details)
Built Distribution
File details
Details for the file all_purpose_dict-0.2.4.tar.gz
.
File metadata
- Download URL: all_purpose_dict-0.2.4.tar.gz
- Upload date:
- Size: 178.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/0.12.15 CPython/3.7.3 Linux/5.1.2-arch1-1-ARCH
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1ca3b4a4ad4311096b38ed9545b463eeaf5f4ed09735a27e8ca20b20a1ca401 |
|
MD5 | cce3b6ff7902000dee49b48e094a3c0a |
|
BLAKE2b-256 | fd1a830cecdfc94f7ad0441b7941cadf41354f305be79e282e4cfd9364489a6f |
File details
Details for the file all_purpose_dict-0.2.4-py3-none-any.whl
.
File metadata
- Download URL: all_purpose_dict-0.2.4-py3-none-any.whl
- Upload date:
- Size: 209.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/0.12.15 CPython/3.7.3 Linux/5.1.2-arch1-1-ARCH
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aadeb0f634546ff3f92b4e85d30a76400c9c241bbc8a68f6e2aed96e32e380de |
|
MD5 | 953963b8bd0698d5949450e1d07625c0 |
|
BLAKE2b-256 | 11e1cbcffe53b7cc176b824f0644e3d43490307deaf251b47cc8e4fd5a4d7467 |