<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jul 7, 2015 at 12:08 AM, Andrew Barnert <span dir="ltr"><<a href="mailto:abarnert@yahoo.com" target="_blank">abarnert@yahoo.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><span class=""><div>On Jul 6, 2015, at 14:30, Neil Girdhar <<a href="mailto:mistersheik@gmail.com" target="_blank">mistersheik@gmail.com</a>> wrote:</div><div><br></div><blockquote type="cite"><div><div dir="ltr">SortedDict (<a href="http://www.grantjenks.com/docs/sortedcontainers/sorteddict.html" target="_blank">http://www.grantjenks.com/docs/sortedcontainers/sorteddict.html</a>) manages to support indexing.  </div></div></blockquote><div><br></div></span><div>Only by having a special view, accessed as .index. If it just took indices as subscripts, that would be ambiguous with integer keys.</div><span class=""><br><blockquote type="cite"><div><div dir="ltr">Can OrderedDict do the same thing?<br></div></div></blockquote><div><br></div></span><div>It's worth noting that most of the various different sorted containers on PyPI support something equivalent, but all with different interfaces.</div></div></blockquote><div><br></div><div>2015 might not be the right year to add sorted containers to Python.  However, it might be a good idea to standardize the interface of a "sorted map" and "sorted set" in a PEP.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div><br></div><div>More importantly, they all use logarithmic data structures (binary trees, b-trees, skip lists, the hybrid thing blist uses, ...), which give you O(log N) indexing, and some of them can do even better by giving you O(log N) to find a slice and O(1) within that slice; OrderedDict uses a linked list, so it would be O(N).</div><span class=""><br><blockquote type="cite"><div><div dir="ltr"><br>On Monday, July 6, 2015 at 10:49:44 AM UTC-4, Kale Kundert wrote:<blockquote class="gmail_quote" style="margin:0;margin-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex">Today I was trying to use collections.OrderedDict to manage a LIFO queue, and I
<br>was surprised to realize that OrderedDict doesn't provide a way to look at its
<br>first or last item.  There is an OrderedDict.popitem() method, which removes and
<br>returns either the first or last item, but it's not hard to imagine cases where
<br>you would want to see what's on the queue without popping it right away.
<br>
<br>My proposal is to add a peekitem() method to OrderedDict.  This method would
<br>have the same signature and would return the same thing as popitem(), it just
<br>wouldn't modify the data structure.
<br>
<br>-Kale
<br>
<br>P.S. There is already a way to peek at the last item an OrderedDict, but it
<br>hides the intent of the code and you wouldn't think of it if you weren't
<br>familiar with python: next(reversed(ordered_dict))
<br>
<br>_______________________________________________
<br>Python-ideas mailing list
<br><a rel="nofollow">Python...@python.org</a>
<br><a href="https://mail.python.org/mailman/listinfo/python-ideas" rel="nofollow" target="_blank">https://mail.python.org/mailman/listinfo/python-ideas</a>
<br>Code of Conduct: <a href="http://python.org/psf/codeofconduct/" rel="nofollow" target="_blank">http://python.org/psf/codeofconduct/</a>
<br></blockquote></div></div></blockquote></span><blockquote type="cite"><div><span>_______________________________________________</span><br><span>Python-ideas mailing list</span><br><span><a href="mailto:Python-ideas@python.org" target="_blank">Python-ideas@python.org</a></span><span class=""><br><span><a href="https://mail.python.org/mailman/listinfo/python-ideas" target="_blank">https://mail.python.org/mailman/listinfo/python-ideas</a></span><br><span>Code of Conduct: <a href="http://python.org/psf/codeofconduct/" target="_blank">http://python.org/psf/codeofconduct/</a></span></span></div></blockquote></div></blockquote></div><br></div></div>