orderedmultidict
Ordered Multivalue Dictionary
What it is and what it does
orderedmultidict (omdict) is a dictionary implementation that allows multiple values to be stored under a single key, while maintaining the order in which keys and values were inserted or modified. It provides method parity with Python's built-in dict, so it can often be used as a drop-in replacement. The package depends only on six and is written in pure Python, making it lightweight and portable.
The primary use case is handling data structures where a key naturally maps to multiple values—such as URL query parameters or form submissions—while preserving the sequence of insertions. It supports standard dict operations like update(), get(), and items(), alongside multidict-specific methods like add(), addlist(), and getlist() for managing multiple values per key.
Use it for:
- Parse and manipulate URL query strings where parameters may repeat (used by furl)
- Store form submission data where a field name may have multiple values
- Build ordered key-value stores that need to preserve insertion sequence across updates
- Replace dict in code that needs multivalue semantics without rewriting the API
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
orderedmultidict provides a dictionary that stores multiple values per key while preserving insertion order, with an API compatible with Python's built-in dict.
Yes, if you need multivalue dictionary semantics. The package is stable, has no known vulnerabilities, installs with low friction, and is in the public domain. The 269-day maintenance gap is a minor concern for a mature library, but the active repository and broad Python version support (2.7, 3.6–3.9, PyPy) make it reliable for existing projects. Not necessary if you can use a list-of-tuples or a dict-of-lists instead.
Install
orderedmultidict on PyPI
pip
pip install orderedmultidictuv
uv add orderedmultidictpoetry
poetry add orderedmultidictInstalling orderedmultidict
Before you install
Installation is straightforward with low friction; the package depends only on six and ships as a pure Python wheel. Maintenance is aging—no releases in 269 days—but the repository remains active and the codebase is stable.
License in practice
Released under the Unlicense and placed in the public domain, so there are no licensing restrictions on use, modification, or redistribution.
Quickstart
pip install orderedmultidict
from orderedmultidict import omdict
omd = omdict()
omd.add(1, 'first')
omd.add(1, 'second')
print(omd.getlist(1)) # [1, 'first', 'second']
Verify before relying
- Current compatibility with Python versions beyond 3.9 (classifiers list 3.9 as the highest)
- Whether the package is actively maintained or in maintenance-only mode given the 269-day gap since last release
Package facts
| License | Unlicense (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — six |
| Maintenance | aging — 269 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 6,009,079/month — #1,986 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: orderedmultidict-1.0.2-py2.py3-none-any.whl
Tags
More Libraries packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
python-dateutilProvides parsing, arithmetic, and recurrence…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
pytestpytest is a testing framework that lets you…
permissive · top 100 on PyPI
boltonsBoltons provides a collection of over 230…
permissive · top 1,000 on PyPI
multidictMultidict is a dict-like container that allows…
permissive · top 100 on PyPI
ordereddictProvides an OrderedDict implementation for…
permissive · top 15,000 on PyPI
fractional-indexingGenerates sortable string keys for inserting…
permissive · top 15,000 on PyPI
nocasedictA case-insensitive ordered dictionary that…
copyleft · top 15,000 on PyPI
orderly-setProvides multiple ordered set implementations…
permissive · top 1,000 on PyPI
ordered-setOrderedSet is a mutable collection that…
permissive · top 1,000 on PyPI
sortedcollectionsProvides specialized sorted collection data…
permissive · top 15,000 on PyPI
vdfSerializes and deserializes Valve's KeyValue…
permissive · top 15,000 on PyPI
yamlloaderProvides specialized loaders and dumpers for…
permissive · top 15,000 on PyPI