view numerics/sort.py @ 134:b6242f916cef

stub; needs a test
author Jeff Hammel <k0scist@gmail.com>
date Tue, 17 Mar 2015 11:38:43 -0700
parents
children 12649a88545c
line wrap: on
line source

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
sort columned data
"""

# module globals
__all__ = ['Sorter']

class Sorter(object):
    """
    sorter for columned data
    """

    def __init__(self, *indices):
        """
        indices -- 2-tuple of (index, forward)
        where forward should be True or False
        """
        self.indices = indices

    def __call__(self, rows):
        return sorted(rows, key=self.key)

    def key(self, row):
        retval = []
        for index, forward in self.indices:
            value = row[index]
            if not forward:
                value = -value
            retval.append(value)
        return tuple(retval)