Not sure if you have found an answer to this yet, but with more information about what you&#39;re trying to do could help with communicating the right solution. Again I think a hash table can answer your questions about fast-lookup, but it just depends your chosen key, and other requirements you might have about sorting.<br>
<br>If its not too sugar specific, feel free to contact me directly.<br><br>Regards,<br>James.<br><br><br><div class="gmail_quote">2009/6/7 Benjamin M. Schwartz <span dir="ltr">&lt;<a href="mailto:bmschwar@fas.harvard.edu">bmschwar@fas.harvard.edu</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="im">Lucian Branescu wrote:<br>
&gt; Would an ordered dictionary otherwise be all right, or am I<br>
&gt; misunderstanding your requirements? There are other implementations,<br>
&gt; like <a href="http://www.xs4all.nl/%7Eanthon/Python/ordereddict/" target="_blank">http://www.xs4all.nl/~anthon/Python/ordereddict/</a><br>
<br>
</div>No, an ordered dictionary is not enough.  All these ordered dictionaries<br>
are ordered either by time or by sorting the keys.  Neither will work for<br>
me.  The problem is simple: if I insert something at position 5, I need<br>
the object currently at position 5 to move to position 6, and the object<br>
currently at position 6 to move to position 7, etc.<br>
<br>
To accomplish this in an time-ordered odict, I would have to remove all<br>
keys subsequent to the insertion point, make the insertion, and then<br>
re-insert those keys.  That&#39;s O(n).<br>
<br>
To accomplish this in a sorted-order odict, I would have to generate a new<br>
key that causes my insertion to occur at the right location.  If there are<br>
repeated insertions at the same location, generating such keys becomes an<br>
O(n) operation.  To see this, suppose I am repeatedly inserting at the<br>
second position.  Initially, the keys are (0,1).  The first insertion has<br>
to pick a key between 0 and 1, e.g. 0.5.  The second insertion has to pick<br>
a key between 0 and 0.5: e.g. 0.25.  The number of bits required to store<br>
these keys to sufficient precision increases by one bit on each insertion.<br>
 This means that the length of the keys is O(n), so every comparison is O(n).<br>
<br>
--Ben<br>
<br>
</blockquote></div><br>