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.2.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.2-cp313-cp313-win_amd64.whl (23.7 kB view details)

Uploaded CPython 3.13Windows x86-64

dequedict-0.1.2-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.2-cp313-cp313-macosx_11_0_arm64.whl (21.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

dequedict-0.1.2-cp313-cp313-macosx_10_13_x86_64.whl (21.6 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

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

Uploaded CPython 3.12Windows x86-64

dequedict-0.1.2-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.2-cp312-cp312-macosx_11_0_arm64.whl (21.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.13+ x86-64

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

Uploaded CPython 3.11Windows x86-64

dequedict-0.1.2-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.2-cp311-cp311-macosx_11_0_arm64.whl (21.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.9+ x86-64

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

Uploaded CPython 3.10Windows x86-64

dequedict-0.1.2-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.2-cp310-cp310-macosx_11_0_arm64.whl (21.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.10macOS 10.9+ x86-64

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

Uploaded CPython 3.9Windows x86-64

dequedict-0.1.2-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.2-cp39-cp39-macosx_11_0_arm64.whl (21.8 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

dequedict-0.1.2-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.2.tar.gz.

File metadata

  • Download URL: dequedict-0.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 26cccd2297722495d0ca0d82763056632986669da508bc791a453d985de1a24e
MD5 817e4d52b8874cb937a4e29b6d1679a6
BLAKE2b-256 8caef0f77717dffe76e0f6e03404ae02d07ff8d35fa0bdb53df43f811040af41

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dequedict-0.1.2-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.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b993100cb12ef0dbc9702576d518c8168bb3ff66792b2d57bc38c69826f08364
MD5 8ad2991ceb490620da155db06f6a8d5e
BLAKE2b-256 62ada59c23c0598dc39d4e0b6764ce0fd4d59a37744ef7157104c956208c19e7

See more details on using hashes here.

File details

Details for the file dequedict-0.1.2-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.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 001916aa7f1208bb62de6825c394ebda8fc4e795aa8b860cb568b81eeeaf2a65
MD5 f7431852358a2e92666f94f58f317d42
BLAKE2b-256 4de19b309f4def88b3d812f89ad8991ad0763d45b81348b614490bea80655de5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dequedict-0.1.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 832e428e6ac655438ec9802ae954b311dcbc1a464e8f8036817d0b51d04373f3
MD5 a2ee49e6c0ca861382dcc0aee1c4abdd
BLAKE2b-256 eff74438fbf83e51896c94b96b35cad68598da4cdf183985f156bc335a2c9d9b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dequedict-0.1.2-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 79094e1462b5690a3890dcc7d60213dba19c78caf8e7f6cb039796818ca818bd
MD5 e53df0c5fb1eb89ede5a1495130c4d96
BLAKE2b-256 50d3d9e7a981d8ab26cc48b60e49ad1d10cb01d71d465249a8a82ddf9e313895

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dequedict-0.1.2-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.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 967cbd11fdcc5c1013d55f570f01be71f13fdc3aa5d6d8fb43a53fbb7ab69381
MD5 57dd63e979dbd403347b02f584758beb
BLAKE2b-256 4d3fd5efba077479c99ef8f3274ae9a6ecd5205def0b4d89f33e0c14e5768faf

See more details on using hashes here.

File details

Details for the file dequedict-0.1.2-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.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 face0f1f15dffa892acf597dd1f03394a4713509970b09f0db72a0b5bde1701d
MD5 9bdd4b6ad776d4af32c9cb3b61664f59
BLAKE2b-256 c015ae2be4e22af228cf5b63ef41915657c9f8f3017e7fd24bbf0a7cb337aadf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dequedict-0.1.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0742dddbac11d5ce6ce8e4a5b5d10178c7f0cebc5a4784521358b21cadb0c7f6
MD5 cf6c6e6b4a3b798fdbd297e2665c72a3
BLAKE2b-256 d9d8273233fee44913290c22681384ff8ac0b854457ea7b7bc0aa2dbe18115e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dequedict-0.1.2-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 f2ae06b7c71c509d4ae5c7c1bb1bb0fce36340fdc69041ee0a222378ef7a85a8
MD5 4419ba1ef3478fc195dff223a8c96423
BLAKE2b-256 6cfa34d3a4dfc7be29c59a2d5bd549ed0cb4d49404d92f0687ae21328055ef1b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dequedict-0.1.2-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.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 616b25de2e9a24b60bf4e4abfecd51ac4ed4bb5d9c36501b4bbf934d42ae34d3
MD5 0227d7311569b5e9953fee0a5e1fe7fd
BLAKE2b-256 a4f195b5a0497e41de29ff3f33ee88a579e7d28366fe568e4d615d64d4120bea

See more details on using hashes here.

File details

Details for the file dequedict-0.1.2-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.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dc89a817ce6410466b2c1d427f7bd2282ab5be9e769981ef82383deb381a2fa6
MD5 6806cdb3d494eb0bd864ba658ecb2fe6
BLAKE2b-256 60b40eb6b52e3865df38f5923464b4800047838f0777787971cea343cb08f789

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dequedict-0.1.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 df628fe3ba4f8b6093ea3bba93969f5cf6ba37d4600e42fb1216b87e008efd2c
MD5 c29ab91e727b54427213018dfa140bee
BLAKE2b-256 ddd00c42105689b7ee1d9b35b73ab415d5eb43137a898060444b06bd5e8d7525

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dequedict-0.1.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6552e6dccdf0cf80ad6f0f33713476aa9b934a489dee02943ab48bb850c887a8
MD5 1585000267e38b7ff8906aa498432735
BLAKE2b-256 e79cec0806d3d4c91c40411104239d3f87f5b0d7b81260e1d46b3bc65ab4210d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dequedict-0.1.2-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.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 28a78d510125c1ceaba80ca87d7eacd37945c6f9b96e1aec96e7e884a5d3914b
MD5 f6358eecf4ca4050ab04741f361ca99d
BLAKE2b-256 e0f128f7d88a8d18905b4c34a79d6c0749baa244577023c676901147035944f3

See more details on using hashes here.

File details

Details for the file dequedict-0.1.2-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.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0894f9926077e1e73794f8800a2f2b88e9a492ce0691cfc63628d27340392e6a
MD5 b23cf14a07bf01ed746493d6c8ae6f15
BLAKE2b-256 7236530ac088c2711fc215484e4513d79a4991ddaff1147662e44ce50b216a86

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dequedict-0.1.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b80e3d92247cd200016e2e16c0b4d87b0087caf413b8f58b787e75633a6a631a
MD5 1339a3dbbfe10222b9bf49b79e1b00d4
BLAKE2b-256 a24510b2a5ed91c9d6190c37f95b52aebe95bae17b456084968f2d1ef156009c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dequedict-0.1.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6dab12a48f59f694e2f74341db1bca953542fdae565b21dc572f0c000c055616
MD5 61941583e4f52b1d3a996035d38befd1
BLAKE2b-256 e5422eddf4d265dde1d80213487b9d3cad7f4fa0d7457e2c4e480ae0caaf64af

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dequedict-0.1.2-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.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 fc7390917c546cfe20d43994af916c0c324a0d915925d9fd710f10a51a90532f
MD5 1261ae860e7e0dcf475fa63526923c22
BLAKE2b-256 6a0cf731094020bc3c8e2621777295bdd1f8761e504c89d820cb1bfbd1f569bf

See more details on using hashes here.

File details

Details for the file dequedict-0.1.2-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.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 931a395d8585ef08e491fe6ac35d9fad947b064ab7d74016b90927a592997898
MD5 d8eb0a85a1f1bf104aba646e3e31d64d
BLAKE2b-256 4d4c78906fc8d23dec965d6b6655bf4df1521ffc91c3fb83b8859844b8326d4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dequedict-0.1.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a8713742c1ac760e5b37b2a3916a0325b3b53cacfc180a0ecebf6d4fb8dcfc0f
MD5 9025bf50614e4039be11f853eaf9f404
BLAKE2b-256 d0a2a04007202452ee4e3dda05f3c377fb92de1fce3ec6ddd131ed2391ad7ca6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dequedict-0.1.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e0f362ce4c0f7ec4d446f867992f8e1ba5904f5ac29a736f4465f6d55c853dfa
MD5 02382c539bbc8a00e28728840dc94e46
BLAKE2b-256 6e2ffc26c55e1bc4900ed6f9d45d3b1f9771107a4d2b0055826460248364d9ba

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