On Thu, Dec 19, 2019 at 5:39 PM Nick Coghlan <ncogh...@gmail.com> wrote:

> I took Larry's request a slightly different way: he has a use case where
> he wants order preservation (so built in sets aren't good), but combined
> with low cost duplicate identification and elimination and removal of
> arbitrary elements (so lists and collections.deque aren't good). Organising
> a work queue that way seems common enough to me to be worthy of a stdlib
> solution that doesn't force you to either separate a "job id" from the
> "job" object in an ordered dict, or else use an ordered dict with "None"
> values.
>

It's not obvious to me that insertion order is even the most obvious or
most commonly relevant sort order.  I'm sure it is for Larry's program, but
often a work queue might want some other order.  Very often queues might
instead, for example, have a priority number assigned to them.

The widely used third-party `sortedcollections` module maintains either
"natural" order or some key order.  That could be engineered to be
insertion order fairly easily.  Admittedly, 'OrderedSet' sounds a bit
different from 'SortedSet'.

In [8]: sortedcontainers.SortedSet(['Wake Up', 'Drink Coffee', 'Make
Breakfast'])
Out[8]: SortedSet(['Drink Coffee', 'Make Breakfast', 'Wake Up'])

In [9]: sortedcontainers.SortedSet(['Wake Up', 'Drink Coffee', 'Make
Breakfast'], key=lambda s: s[-1])
Out[9]: SortedSet(['Drink Coffee', 'Wake Up', 'Make Breakfast'],
key=<function <lambda> at 0x7f68f5985400>)

In [10]: 'Make Breakfast' in tasks
Out[10]: True

-- 
Keeping medicines from the bloodstreams of the sick; food
from the bellies of the hungry; books from the hands of the
uneducated; technology from the underdeveloped; and putting
advocates of freedom in prisons.  Intellectual property is
to the 21st century what the slave trade was to the 16th.
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/KKYFUXUHYIQB5Q532FV4YXDLKMRX55XY/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to