Raymond Hettinger added the comment:
Please don't rush to make patches. It isn't even clear that this is a good
idea.
AFAICT, none of the many extant implementation of ordered dictionaries in any
language currently implement a rotate operation.
FWIW, the iter() and move_to_end() methods are likely your best bet for
implementing a rotate function using the current API and without doing any
ordered dictionary key lookups:
>>> from collections import OrderedDict
>>> from itertools import islice
>>>
>>> def rotate(d, n):
# quick demo
if n > 0:
for k in list(islice(d, n)):
d.move_to_end(k)
elif n < 0:
for k in list(islice(reversed(d), -n)):
d.move_to_end(k, 0)
>>> d = collections.OrderedDict.fromkeys('abcdefghijk')
>>> list(d)
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']
>>> rotate(d, 3)
>>> list(d)
['d', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'a', 'b', 'c']
>>> rotate(d, -3)
>>> list(d)
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue17100>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com