summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/utils/datastructures.py5
-rw-r--r--tests/regressiontests/datastructures/tests.py8
2 files changed, 12 insertions, 1 deletions
diff --git a/django/utils/datastructures.py b/django/utils/datastructures.py
index 2f3c9bb568..d750f098f0 100644
--- a/django/utils/datastructures.py
+++ b/django/utils/datastructures.py
@@ -54,7 +54,10 @@ class SortedDict(dict):
def __init__(self, data=None):
if data is None: data = {}
dict.__init__(self, data)
- self.keyOrder = data.keys()
+ if isinstance(data, dict):
+ self.keyOrder = data.keys()
+ else:
+ self.keyOrder=[key for key, value in data]
def __setitem__(self, key, value):
dict.__setitem__(self, key, value)
diff --git a/tests/regressiontests/datastructures/tests.py b/tests/regressiontests/datastructures/tests.py
index 3920e1ca40..b58ee79693 100644
--- a/tests/regressiontests/datastructures/tests.py
+++ b/tests/regressiontests/datastructures/tests.py
@@ -55,6 +55,14 @@ True
>>> print repr(d)
{'one': 'not one', 'two': 'two', 'three': 'three'}
+Init from sequence of tuples
+>>> d = SortedDict((
+... (1, "one"),
+... (0, "zero"),
+... (2, "two")))
+>>> print repr(d)
+{1: 'one', 0: 'zero', 2: 'two'}
+
### DotExpandedDict ############################################################
>>> d = DotExpandedDict({'person.1.firstname': ['Simon'], 'person.1.lastname': ['Willison'], 'person.2.firstname': ['Adrian'], 'person.2.lastname': ['Holovaty']})