From 89b431213bc74f219da48489fbaabdd02bcfe56a Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Mon, 31 Jan 2011 01:28:10 -0500 Subject: [PATCH] Sorting update for headerless datasets. --- tablib/core.py | 30 +++++++++++++++++++++++------- 1 file 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) + _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) + + 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