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
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
Built Distribution
File details
Details for the file all_purpose_dict-0.2.0.tar.gz
.
File metadata
- Download URL: all_purpose_dict-0.2.0.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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51fbb8a290bf5f9ae1bc33edf995ecebba95455c4d22d17f39127a9f15be7cd6 |
|
MD5 | 5f73e763403c195568fa4ddd4e9f7c8d |
|
BLAKE2b-256 | 58112b54a3dec050e5c045dbf98041708dee1dadb4c07eeba5f87a693628b81d |
File details
Details for the file all_purpose_dict-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: all_purpose_dict-0.2.0-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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6e0c93fafc581ee99eb7dec000a6033b89a541cb9ce445a6d050837c38277b1f |
|
MD5 | 71b8bfd5d70ec472bb309c9133383b94 |
|
BLAKE2b-256 | 3e1c739ee444da95b7d58fb136f3e0d82dff80c0260e9be17f025f52c0829922 |