https://github.com/olsonpm/py_all-purpose-dict
https://github.com/olsonpm/py_all-purpose-dict
Last synced: 7 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/olsonpm/py_all-purpose-dict
- Owner: olsonpm
- Created: 2019-01-21T06:31:31.000Z (over 7 years ago)
- Default Branch: dev
- Last Pushed: 2019-05-19T20:16:46.000Z (about 7 years ago)
- Last Synced: 2025-10-06T08:57:49.130Z (8 months ago)
- Language: Python
- Homepage:
- Size: 186 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# All Purpose Dict
**Table of Contents**
- [What is it?](#what-is-it)
- [Why create it?](#why-create-it)
- [Simple usage](#simple-usage)
- [See Also](#see-also)
- [Api](#api)
- [Test](#test)
### 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.
```py
# doesn't work
someDict = { "key": "value" }
anotherDict = { someDict: "anotherValue" }
```
### Simple usage
```py
from all_purpose_dict import ApDict
someDict = { "key": "value" }
anotherDict = ApDict([(someDict, "anotherValue")])
print(someDict in anotherDict) # prints True
```
### See Also
- [All Purpose Set](https://github.com/olsonpm/py_all-purpose-set)
### 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`
##### getKeysIterator() => ApDictKeysIterator
##### set(key, value)
- a function alternative to `aDict[key] = val`
##### getValuesIterator() => ApDictValuesIterator
### Test
```sh
#
# you must have poetry installed
#
$ poetry shell
$ poetry install
$ python runTests.py
```