From f81dc41a57e19926868efa036bdb9e862cd3bbbb Mon Sep 17 00:00:00 2001 From: Luca Beltrame Date: Tue, 11 Jan 2011 20:53:59 +0100 Subject: Support for sorting. Unit-tested. --- tablib/core.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'tablib') 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 -- cgit v1.2.1