Merge pull request #444 from mitar/patch-2

Allow reversed iteration over SortedDict.
This commit is contained in:
Alex Gaynor 2012-10-20 20:39:49 -07:00
commit 6b3d2bc981
2 changed files with 9 additions and 0 deletions

View File

@ -160,6 +160,9 @@ class SortedDict(dict):
def __iter__(self):
return iter(self.keyOrder)
def __reversed__(self):
return reversed(self.keyOrder)
def pop(self, k, *args):
result = super(SortedDict, self).pop(k, *args)
try:

View File

@ -128,6 +128,12 @@ class SortedDictTests(SimpleTestCase):
self.assertEqual(self.d1, {})
self.assertEqual(self.d1.keyOrder, [])
def test_reversed(self):
self.assertEqual(list(self.d1), [7, 1, 9])
self.assertEqual(list(self.d2), [1, 9, 0, 7])
self.assertEqual(list(reversed(self.d1)), [9, 1, 7])
self.assertEqual(list(reversed(self.d2)), [7, 0, 9, 1])
def test_insert(self):
d = SortedDict()
with warnings.catch_warnings(record=True) as w: