Yet another ordered dictionary implementation

T

Tom Anderson

What up yalls,

Since i've been giving it all that all over the ordered dictionary thread
lately, i thought i should put my fingers where my mouth is and write one
myself:

http://urchin.earth.li/~twic/odict.py

It's nothing fancy, but it does what i think is right.

The big thing that i'm not happy with is the order list (what Larosa and
Foord call 'sequence', i call 'order', just to be a pain); this is a list
of keys, which for many purposes is ideal, but does mean that there are
things you might want to do with the order that you can't do with normal
python idioms. For example, say we wanted to move the last item in the
order to be first; if this was a normal list, we'd say:

od.order.insert(0, od.order.pop())

But we can't do that here - the argument to the insert is just a key, so
there isn't enough information to make an entry in the dict. To make up
for this, i've added move and swap methods on the list, but this still
isn't idiomatic.

In order to have idiomatic order manipulation, i think we need to make the
order list a list of items - that is, (key, value) pairs. Then, there's
enough information in the results of a pop to support an insert. This also
allows us to implement the various other mutator methods on the order
lists that i've had to rub out in my code.

However, this does seem somehow icky to me. I can't quite put my finger on
it, but it seems to violate Once And Only Once. Also, even though the
above idiom becomes possible, it leads to futile remove-reinsert cycles in
the dict bit, which it would be nice to avoid.

Thoughts?

tom
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top