(items, key=lambda x: x, reverse=False)
| 7 | |
| 8 | |
| 9 | def argsort(items, key=lambda x: x, reverse=False): |
| 10 | # sorted_items: items sorted by key, descending |
| 11 | # orig_to_sort: tuple of integers, satisfies the following: |
| 12 | # tuple(items[i] for i in orig_to_sort) == sorted_items |
| 13 | # items[orig_to_sort[i]] == sorted_items[i] |
| 14 | # sort_to_orig: tuple of integers, satisfies the following: |
| 15 | # tuple(sorted_items[i] for i in sort_to_orig) == items |
| 16 | # sorted_items[sort_to_orig[i]] == items[i] |
| 17 | orig_to_sort, sorted_items = zip(*sorted( |
| 18 | enumerate(items), key=lambda x: key(x[1]), reverse=reverse)) |
| 19 | sort_to_orig = tuple( |
| 20 | x[0] for x in sorted( |
| 21 | enumerate(orig_to_sort), key=operator.itemgetter(1))) |
| 22 | return sorted_items, sort_to_orig, orig_to_sort |
| 23 | |
| 24 | |
| 25 | def sort_lists_by_length(lists): |
no outgoing calls
no test coverage detected