检索按值排序的值的索引的最有效的方法是什么?

时间:2018-06-20 16:13:17

标签: python list sorting

我有一个列表a = [1, 5, 2, 8]

我需要一个函数,该函数将返回按其值排序的条目的索引,即     b = [3, 1, 2, 0]

我想出了一个函数来做到这一点:

def indices_sorted_by_val(a, reverse=True):
    return [ y[0] for y in  sorted( [(i,a[i]) for i in range(len(a))], key=lambda x: x[1], reverse=reverse )]

但是它很混乱而且很难阅读。还有更Python化的方法吗?

1 个答案:

答案 0 :(得分:0)

首先尝试... enumerate将有所帮助。我投票反对一线,因为可读性很重要

a = [1, 5, 2, 8]

sorted_tuples = sorted(enumerate(a), key= lambda x: x[1], reverse=True)
print([index for index, value in sorted_tuples])