multidict
Multidict is dict-like collection of key-value pairs where key might be occurred more than once in the container.
Introduction
HTTP Headers and URL query string require specific data structure: multidict. It behaves mostly like a regular dict
but it may have several values for the same key and preserves insertion ordering.
The key is str
(or istr
for case-insensitive dictionaries).
multidict
has four multidict classes: MultiDict
, MultiDictProxy
, CIMultiDict
and CIMultiDictProxy
.
Immutable proxies (MultiDictProxy
and CIMultiDictProxy
) provide a dynamic view for the proxied multidict, the view reflects underlying collection changes. They implement the collections.abc.Mapping
interface.
Regular mutable (MultiDict
and CIMultiDict
) classes implement collections.abc.MutableMapping
and allows to change their own content.
Case insensitive (CIMultiDict
and CIMultiDictProxy
) ones assume the keys are case insensitive, e.g.:
>>> dct = CIMultiDict(key='val') >>> 'Key' in dct True >>> dct['Key'] 'val'
Keys should be str
or istr
instances.
The library has optional C Extensions for sake of speed.
License
Apache 2
Library Installation
$ pip install multidict
The library is Python 3 only!
PyPI contains binary wheels for Linux, Windows and MacOS. If you want to install multidict
on another operation system (or Alpine Linux inside a Docker) the Tarball will be used to compile the library from sources. It requires C compiler and Python headers installed.
To skip the compilation please use MULTIDICT_NO_EXTENSIONS environment variable, e.g.:
$ MULTIDICT_NO_EXTENSIONS=1 pip install multidict
Please note, Pure Python (uncompiled) version is about 20-50 times slower depending on the usage scenario!!!
Changelog
See RTD page.