summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Reitz <me@kennethreitz.com>2011-01-31 01:28:10 -0500
committerKenneth Reitz <me@kennethreitz.com>2011-01-31 01:28:10 -0500
commit89b431213bc74f219da48489fbaabdd02bcfe56a (patch)
treecf7912d170a1404f40e6dc73c3c664f761b9610a
parent695e8c5af7a0d66c6ea96dec535535b0e1ac25b0 (diff)
downloadtablib-89b431213bc74f219da48489fbaabdd02bcfe56a.tar.gz
Sorting update for headerless datasets.
-rw-r--r--tablib/core.py30
1 files changed, 23 insertions, 7 deletions
diff --git a/tablib/core.py b/tablib/core.py
index 19eec3e..0de2b28 100644
--- a/tablib/core.py
+++ b/tablib/core.py
@@ -535,16 +535,32 @@ class Dataset(object):
reversed by setting ``reverse`` to ``True``. Requires headers to be
set. Returns a new :class:`Dataset` instance where columns have been
sorted."""
+ if isinstance(col, basestring):
- if not self.headers:
- raise HeadersNeeded
+ if not self.headers:
+ raise HeadersNeeded
+
+ _sorted = sorted(self.dict, key=itemgetter(col), reverse=reverse)
+ _dset = Dataset(headers=self.headers)
+
+ for item in _sorted:
+ row = [item[key] for key in self.headers]
+ _dset.append(row=row)
+
+ else:
+ if self.headers:
+ col = self.headers[col]
+
+ _sorted = sorted(self.dict, key=itemgetter(col), reverse=reverse)
+ _dset = Dataset(headers=self.headers)
- _sorted = sorted(self.dict, key=itemgetter(col), reverse=reverse)
- _dset = Dataset(headers=self.headers)
+ for item in _sorted:
+ if self.headers:
+ row = [item[key] for key in self.headers]
+ else:
+ row = item
+ _dset.append(row=row)
- for item in _sorted:
- row = [item[key] for key in self.headers]
- _dset.append(row=row)
return _dset