Skip to main content

A data structure to impose a total order on a collection of objects

Project description

A data structure to impose a total order on a collection of objects.

Dependencies

ordering requires Python 3.6+. If the type hints were removed, it would probably work in earlier versions, as well.

Usage

An ordering is represented by an Ordering object. The order may be different to the usual order between objects, or even between objects that are not normally comparable.

>>> from ordering import Ordering
>>> order = Ordering([2, 0, 1])

We can then compare the objects in our ordering, to check if the first object comes before the second in the order.

>>> order.compare(0, 1) # 1 after 0
True
>>> order.compare(0, 2) # 2 before 0
False

Our ordering is mutable, and we can add elements on either end, or immediately before or after an existing element.

>>> order.insert_end(3) # Add 3 on the end
>>> order.compare(1, 3) # 3 after 1
True

>>> order.insert_after(0, 4) # Insert 4 immediately after 0
>>> order.compare(0, 4) # 4 after 0
True
>>> order.compare(1, 4) # 4 before 1
False

Orderings are iterable, yielding their items in order.

>>> list(order)
[2, 0, 4, 1, 3]

And can be used as a key in sorting functions, to sort with respect to that order.

>>> sorted(range(3), key=order)
[2, 0, 1]

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

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

ordering-0.2.0-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file ordering-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ordering-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cf2920b92605a7c5d9d1060bacc03bf31923ef9ba8d24999b77d662d9f80adcd
MD5 4ee34421876b4f79450491237490950f
BLAKE2b-256 08ef853b5fa50d0e5189a2afff95300253f26fd22dbd7ee7f21fed84ae0732be

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