我有一个列表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化的方法吗?
答案 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])