diff options
| author | Luca Beltrame <einar@heavensinferno.net> | 2011-01-11 20:53:59 +0100 |
|---|---|---|
| committer | Luca Beltrame <einar@heavensinferno.net> | 2011-01-11 20:53:59 +0100 |
| commit | f81dc41a57e19926868efa036bdb9e862cd3bbbb (patch) | |
| tree | cc8a67568ba1bf49a2d7fb2afa48911acb6e87e0 /tablib/core.py | |
| parent | 34415b89b858075323b7a2d034c06b57dd26bdc7 (diff) | |
| download | tablib-f81dc41a57e19926868efa036bdb9e862cd3bbbb.tar.gz | |
Support for sorting. Unit-tested.
Diffstat (limited to 'tablib/core.py')
| -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 c7e9dd5..5727a69 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 |
