Skip to main content

Fast ordered dict with deque-like operations at both ends

Project description

DequeDict

Ordered dictionary with O(1) deque operations at both ends.

Features

  • O(1) key lookup — like dict
  • O(1) pop/peek from both ends — like deque
  • O(1) appendleft, move_to_end, delete by key
  • Full typing support with .pyi stubs

Installation

pip install dequedict

Usage

from dequedict import DequeDict, DefaultDequeDict

dd = DequeDict([("a", 1), ("b", 2), ("c", 3)])

dd["d"] = 4              # Set
value = dd["a"]          # Get
del dd["b"]              # Delete

dd.peekleft()            # First value
dd.popleft()             # Remove first
dd.appendleft("z", 0)    # Insert at front
dd.move_to_end("a")      # Move to back

# DefaultDequeDict: auto-create values like defaultdict
groups = DefaultDequeDict(list)
groups["a"].append(1)
groups["a"].append(2)

API

Method Description
peekleft() / peek() First/last value
peekleftitem() / peekitem() First/last (key, value)
popleft() / pop() Remove and return first/last
popleftitem() / popitem() Remove and return first/last pair
appendleft(key, value) Insert at front
move_to_end(key, last=True) Move to front or back
get, keys, values, items, clear, copy, update, setdefault Standard dict ops

Performance

Mac M1, Python 3.11, C extension:

Operation DequeDict dict deque OrderedDict
Key lookup 32 ns 23 ns O(n) 24 ns
Peek left 22 ns N/A 23 ns 59 ns
Peek right 22 ns N/A 23 ns 70 ns
Pop left ×100 3.7 µs N/A 2.1 µs 7.7 µs
Delete by key ×100 4.3 µs 2.8 µs O(n) 6.0 µs
Insert ×100 6.6 µs 9.5 µs N/A 6.8 µs

Pop is ~1.8x slower than deque due to dict maintenance, but provides O(1) key lookup.

Benchmarks

python benchmarks/benchmark.py

Tests

pip install pytest
python -m pytest tests/ -v

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dequedict-0.1.3.tar.gz (15.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

dequedict-0.1.3-cp313-cp313-win_amd64.whl (23.7 kB view details)

Uploaded CPython 3.13Windows x86-64

dequedict-0.1.3-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (52.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

dequedict-0.1.3-cp313-cp313-macosx_11_0_arm64.whl (21.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

dequedict-0.1.3-cp313-cp313-macosx_10_13_x86_64.whl (21.7 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

dequedict-0.1.3-cp312-cp312-win_amd64.whl (23.7 kB view details)

Uploaded CPython 3.12Windows x86-64

dequedict-0.1.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (52.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

dequedict-0.1.3-cp312-cp312-macosx_11_0_arm64.whl (21.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

dequedict-0.1.3-cp312-cp312-macosx_10_13_x86_64.whl (21.7 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

dequedict-0.1.3-cp311-cp311-win_amd64.whl (23.5 kB view details)

Uploaded CPython 3.11Windows x86-64

dequedict-0.1.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (50.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

dequedict-0.1.3-cp311-cp311-macosx_11_0_arm64.whl (21.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

dequedict-0.1.3-cp311-cp311-macosx_10_9_x86_64.whl (21.5 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

dequedict-0.1.3-cp310-cp310-win_amd64.whl (23.4 kB view details)

Uploaded CPython 3.10Windows x86-64

dequedict-0.1.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (49.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

dequedict-0.1.3-cp310-cp310-macosx_11_0_arm64.whl (21.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

dequedict-0.1.3-cp310-cp310-macosx_10_9_x86_64.whl (21.5 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

dequedict-0.1.3-cp39-cp39-win_amd64.whl (23.5 kB view details)

Uploaded CPython 3.9Windows x86-64

dequedict-0.1.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (49.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

dequedict-0.1.3-cp39-cp39-macosx_11_0_arm64.whl (21.8 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

dequedict-0.1.3-cp39-cp39-macosx_10_9_x86_64.whl (21.5 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

File details

Details for the file dequedict-0.1.3.tar.gz.

File metadata

  • Download URL: dequedict-0.1.3.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dequedict-0.1.3.tar.gz
Algorithm Hash digest
SHA256 b5215335d280c88bebd142eec6a782223f4e47c525ce86e3b52d078b2f247a10
MD5 e0c9897213f42dcf45448aa0bc23012a
BLAKE2b-256 0bef526c5d37acd066a27a7773002c84a12d5ae3cbe77c53675f371abbf3f066

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: dequedict-0.1.3-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 23.7 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dequedict-0.1.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 fe37df8f9ccb8101293ef58d08cb0c98ddbcffa63340fe7ea8f70cc8626414d6
MD5 90edb684f0aac93af4a52fd35f5d4094
BLAKE2b-256 d48d48c401e1e01ff2a381168692adadbc382cfca51f8c42713899da7b4631a9

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dequedict-0.1.3-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 57f5c79911a54fe25544b3bcb4a8007d7d38ded0661f18135b084262fe47f637
MD5 7c8cf805829c63b4b923690c86e4d46f
BLAKE2b-256 e7bff80da62c77b4e73044132f1281943c94dd838e7e1e5a8d8ead0e1e15f818

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dequedict-0.1.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ca92a707ac3b4bc3348fda1cff03e4ea251fae99a587c0cecd80bbf824dfa4ce
MD5 88350cdceb5dc87472feb22271e7d846
BLAKE2b-256 239360fb7de5d67e2240013bbc4b699cf170e4f73d0de695561161768eb9e609

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for dequedict-0.1.3-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 2f7594fe198e5dff79ba937fb69fffed97c249cb83b9ab4710a18fc1424e342f
MD5 3ebb1f0d8f19843c450c66ce3d27f0c8
BLAKE2b-256 98712f85e4ce1f2991d615f8eee76a942221802c58a18836683f4dba99595f75

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: dequedict-0.1.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 23.7 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dequedict-0.1.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f900c4f585c75e4c78d4ebf89cd1ae803483c32da3ebf6dc2f69b9d5a1a6ebe7
MD5 ebab01f1988a1efc410993ec804cf2fe
BLAKE2b-256 6eae13621fc033dd8cf90995fc095a1324e9a8167981dc0947b09e69503926a5

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dequedict-0.1.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5e67c7840175736a7d78355c997e667f5e5b2fdfac533ed270b7222b803fd069
MD5 2714adb3e1f71f52aeb9eb0476e4b1bf
BLAKE2b-256 97b24f8330e177458779d2101b8500729a0dea0ab57e3e4e447d11651cbb8d3d

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dequedict-0.1.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cb6a4d43d2e7b3e4f1520eb116b414590a1ee90aeb37b7995fc8b49688f8d872
MD5 ea804a8797eda29eedaf8676609b9c45
BLAKE2b-256 a198035654c252d99b2cf4ba020b54dd61b8e11570d8c87e8716b49403350768

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for dequedict-0.1.3-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 353e532be51563d022b523b29bc13b35713b9263d57c7c8632125f67ba1b6028
MD5 667edcca1be18a9249aa15819699afd9
BLAKE2b-256 bcf901fff3db7e46d522e37805206e73f5f6ab963b3e64d4d60c8cba2570892d

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: dequedict-0.1.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 23.5 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dequedict-0.1.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 cea54549219617ca983db977e1628d112df29bb6ab4d2c1eb74a7ebfe7056f8d
MD5 8f6bde8d1edbf9cb5cbf50e5e7b0347e
BLAKE2b-256 c24456e1da56881506aeb030a9da2212f35f67159dc9134a3ab3f69a4d42a96f

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dequedict-0.1.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f0b59946fb44b1fe30533d4b53bed7fd02d97ac09f97f3be41f3fb5508f0180e
MD5 9ba8a1405da3cd639ea34c21d20b1c43
BLAKE2b-256 d7e696fb8d2dac30d4ebcc1c8c53db2eeece51230c2161936f69c7930f0c4ab7

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dequedict-0.1.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c50657274b45f52d663ee89b3717233684c10a4d219ce1c815153a4a11d5b2cb
MD5 942da755f652cc578eb45f71eee7410f
BLAKE2b-256 150274490c2c3fbf73f1e6d17892e9d548cf19abf3caa701cffa05d3af01f2c0

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for dequedict-0.1.3-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6814d86410c2ab9e43b476ff9c8efeb47847d849422e34e04c0f76d65724ab90
MD5 3a5399ba6fe4b3db229723bc59330980
BLAKE2b-256 a985cdfbd1b868456535009384098d447a85fe1047e5ff7948a5b2c2e028bdd7

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: dequedict-0.1.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 23.4 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dequedict-0.1.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 9c66485b78247f7ed5656d2bce40cc4934337fa6fe313d46b44ff34957907873
MD5 64a4a5aaa7f4f3fc40da7f6aac6962c1
BLAKE2b-256 d985dc14b6159cf6ccb8d3a9f1dcc566d30332df5cc607430888e385fc07425b

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dequedict-0.1.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 29b0ad19e0fd0e2a83e2c734d7f0156fc4ab89abfb0a31bac98d1e86c12e44f1
MD5 f4604ed73e9c999e9efd7f3edb008ceb
BLAKE2b-256 e8134f8f1298665ea29a2f249660fdcbe0feb352e57f4e2d7a5c65aff7df81c2

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dequedict-0.1.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 37f549059f18957ceaeed498ce2675c8cea19fef99d6a6752029edf6d5934eed
MD5 5a81af0659fa230f7592e8d4b6ef586f
BLAKE2b-256 642969c21154f7edd24e4224f26632c9e2191c45e44c617552753485533d2f5c

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for dequedict-0.1.3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c3ef2ccd07adb0ee2538e4696647f43d77c52a0970455349fa5a3c17dbd68b9c
MD5 fd6ba7bf03f1100c999b7a3ec496a42d
BLAKE2b-256 ba4a98e40c5f818e550b7404d5f61b62ef724e9cbdd04a21532babadc81151f9

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: dequedict-0.1.3-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 23.5 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dequedict-0.1.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1c056e9958be2c59b4a2507c3f751cffea7481bec2243853448aa118053143a2
MD5 92272d7eb49a74f476c34ec69bc902cb
BLAKE2b-256 d3c51a5b5c36e7fe4c9a04e4a349cc4823b92ef23763b8a00d444c4a37b8b96c

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dequedict-0.1.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e2469728411ce51c27a8b313641a405ca22292040d9f73c967b23dd45e6077cc
MD5 d02e39059f510a93518753ecc67235e6
BLAKE2b-256 9d6b34b151332c03aa95f72de2841344876c49700f9cb231c0d67fa45b320882

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dequedict-0.1.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a3942eea49bfd2f5bdf5d785d571a6d1288fb2bc0d10aa82f0a5b88d1d2d456b
MD5 c7e9efc454c1f072d674cc0c8613bec6
BLAKE2b-256 14d2c245c6ec1c8422e1171ae56707d5abdd73b893f50b713612fcd6751773ee

See more details on using hashes here.

File details

Details for the file dequedict-0.1.3-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for dequedict-0.1.3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 87ff9355b24398d91ce1788eb085e4342050cfc66ed6c84676570b775df27c7f
MD5 3c3b92c520b12b1b4cbf321dda3f1b01
BLAKE2b-256 18fc6afa2397c2d5a515fa941682b9c619e7a41dec91fed728008e45b1557e1e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page