diff options
| author | Kenneth Reitz <me@kennethreitz.com> | 2011-01-31 00:58:27 -0500 |
|---|---|---|
| committer | Kenneth Reitz <me@kennethreitz.com> | 2011-01-31 00:58:27 -0500 |
| commit | 695e8c5af7a0d66c6ea96dec535535b0e1ac25b0 (patch) | |
| tree | 5cb6de300cc64b2f0eb7a721bec883acabd50d3a /tablib | |
| parent | 0797ec67d4a4c6c145d86d0b7dca9d3b03c6d8e6 (diff) | |
| parent | 1852624a7ebe88eba70b16eb6ea7c5032ec23346 (diff) | |
| download | tablib-695e8c5af7a0d66c6ea96dec535535b0e1ac25b0.tar.gz | |
Merge branch 'feature/sorting' into release/0.9.3
Diffstat (limited to 'tablib')
| -rw-r--r-- | tablib/core.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tablib/core.py b/tablib/core.py index 6eb57db..19eec3e 100644 --- a/tablib/core.py +++ b/tablib/core.py @@ -10,6 +10,7 @@ """ from copy import copy +from operator import itemgetter from tablib import formats @@ -528,6 +529,25 @@ class Dataset(object): return _dset + def sort(self, col, reverse=False): + + """Sort a :class:`Dataset` by a specific column. The order can be + reversed by setting ``reverse`` to ``True``. Requires headers to be + set. Returns a new :class:`Dataset` instance where columns have been + sorted.""" + + 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) + + return _dset + def transpose(self): """Transpose a :class:`Dataset`, turning rows into columns and vice versa, returning a new ``Dataset`` instance. The first row of the |
