diff options
author | Adrien Di Mascio <Adrien.DiMascio@logilab.fr> | 2006-06-19 15:00:14 +0200 |
---|---|---|
committer | Adrien Di Mascio <Adrien.DiMascio@logilab.fr> | 2006-06-19 15:00:14 +0200 |
commit | 7a640f9e1de9f9dcc3de2c65f9dc5b42c2020cf1 (patch) | |
tree | 8f1dc3f91157f9117baceb0719f3f6f3e46dbd55 /compat.py | |
parent | 5642e9ee5574a2d6d76afe3ecf78f4ec8222be5a (diff) | |
download | logilab-common-7a640f9e1de9f9dcc3de2c65f9dc5b42c2020cf1.tar.gz |
full implementation of sorted
Diffstat (limited to 'compat.py')
-rw-r--r-- | compat.py | 15 |
1 files changed, 12 insertions, 3 deletions
@@ -170,11 +170,20 @@ try: sorted = sorted reversed = reversed except NameError: - def sorted(l, cmp=None): - l2 = list(l) + + def sorted(iterable, cmp=None, key=None, reverse=False): + original = list(iterable) + if key: + l2 = [(key(elt), index) for index, elt in enumerate(original)] + else: + l2 = original l2.sort(cmp) + if reverse: + l2.reverse() + if key: + return [original[index] for elt, index in l2] return l2 - + def reversed(l): l2 = list(l) l2.reverse() |