summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/util.py
diff options
context:
space:
mode:
authorJonathan Ellis <jbellis@gmail.com>2006-10-14 03:41:36 +0000
committerJonathan Ellis <jbellis@gmail.com>2006-10-14 03:41:36 +0000
commitb7f8ca0555d207b419977ff091b25c8f1e5b6ebf (patch)
tree45778d81d98f17454061976682b062c605fe7513 /lib/sqlalchemy/util.py
parent4452519c7fe08151665a2c553589333dce46143a (diff)
downloadsqlalchemy-b7f8ca0555d207b419977ff091b25c8f1e5b6ebf.tar.gz
make OrderedDict consructor, update more dict-like
Diffstat (limited to 'lib/sqlalchemy/util.py')
-rw-r--r--lib/sqlalchemy/util.py25
1 files changed, 15 insertions, 10 deletions
diff --git a/lib/sqlalchemy/util.py b/lib/sqlalchemy/util.py
index 91e295435..5f243ae04 100644
--- a/lib/sqlalchemy/util.py
+++ b/lib/sqlalchemy/util.py
@@ -115,21 +115,26 @@ class OrderedProperties(object):
self.__data.clear()
class OrderedDict(dict):
- """A Dictionary that keeps its own internal ordering"""
-
- def __init__(self, values = None):
+ """A Dictionary that returns keys/values/items in the order they were added"""
+ def __init__(self, d=None, **kwargs):
self._list = []
- if values is not None:
- for val in values:
- self.update(val)
+ self.update(d, **kwargs)
def keys(self):
return list(self._list)
def clear(self):
self._list = []
dict.clear(self)
- def update(self, dict):
- for key in dict.keys():
- self.__setitem__(key, dict[key])
+ def update(self, d=None, **kwargs):
+ # d can be a dict or sequence of keys/values
+ if d:
+ if hasattr(d, 'iteritems'):
+ seq = d.iteritems()
+ else:
+ seq = d
+ for key, value in seq:
+ self.__setitem__(key, value)
+ if kwargs:
+ self.update(kwargs)
def setdefault(self, key, value):
if not self.has_key(key):
self.__setitem__(key, value)
@@ -137,7 +142,7 @@ class OrderedDict(dict):
else:
return self.__getitem__(key)
def values(self):
- return map(lambda key: self[key], self._list)
+ return [self[key] for key in self._list]
def __iter__(self):
return iter(self._list)
def itervalues(self):