diff options
| author | Kenneth Reitz <me@kennethreitz.com> | 2011-01-31 01:28:10 -0500 |
|---|---|---|
| committer | Kenneth Reitz <me@kennethreitz.com> | 2011-01-31 01:28:10 -0500 |
| commit | 89b431213bc74f219da48489fbaabdd02bcfe56a (patch) | |
| tree | cf7912d170a1404f40e6dc73c3c664f761b9610a | |
| parent | 695e8c5af7a0d66c6ea96dec535535b0e1ac25b0 (diff) | |
| download | tablib-89b431213bc74f219da48489fbaabdd02bcfe56a.tar.gz | |
Sorting update for headerless datasets.
| -rw-r--r-- | tablib/core.py | 30 |
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 |
