summaryrefslogtreecommitdiff
path: root/compat.py
diff options
context:
space:
mode:
authorAdrien Di Mascio <Adrien.DiMascio@logilab.fr>2006-06-19 15:00:14 +0200
committerAdrien Di Mascio <Adrien.DiMascio@logilab.fr>2006-06-19 15:00:14 +0200
commit7a640f9e1de9f9dcc3de2c65f9dc5b42c2020cf1 (patch)
tree8f1dc3f91157f9117baceb0719f3f6f3e46dbd55 /compat.py
parent5642e9ee5574a2d6d76afe3ecf78f4ec8222be5a (diff)
downloadlogilab-common-7a640f9e1de9f9dcc3de2c65f9dc5b42c2020cf1.tar.gz
full implementation of sorted
Diffstat (limited to 'compat.py')
-rw-r--r--compat.py15
1 files changed, 12 insertions, 3 deletions
diff --git a/compat.py b/compat.py
index f032252..6100070 100644
--- a/compat.py
+++ b/compat.py
@@ -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()