summaryrefslogtreecommitdiff
path: root/tablib/core.py
diff options
context:
space:
mode:
authorLuca Beltrame <einar@heavensinferno.net>2011-01-11 20:53:59 +0100
committerLuca Beltrame <einar@heavensinferno.net>2011-01-11 20:53:59 +0100
commitf81dc41a57e19926868efa036bdb9e862cd3bbbb (patch)
treecc8a67568ba1bf49a2d7fb2afa48911acb6e87e0 /tablib/core.py
parent34415b89b858075323b7a2d034c06b57dd26bdc7 (diff)
downloadtablib-f81dc41a57e19926868efa036bdb9e862cd3bbbb.tar.gz
Support for sorting. Unit-tested.
Diffstat (limited to 'tablib/core.py')
-rw-r--r--tablib/core.py20
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