从列表列表中返回排序的索引列表

时间:2018-06-03 14:44:20

标签: python

如果我有一个列表列表,我知道我可以使用here发布的解决方案获取最大项目的索引:

def get_maximum_votes_index(L):
    return max((n,i,j) for i, L2 in enumerate(L) for j, n in enumerate(L2))[1:]

但是,如果我想返回一个排序的索引列表,从最大值开始下降,我该怎么做?

例如:

L = [[1,2],[4,3]]

会回来:

[(1,0),(1,1),(0,1),(0,0)]

1 个答案:

答案 0 :(得分:3)

您基本上只需要将max替换为sorted

L = [[1,2],[4,3]]

# step 1: add indices to each list element
L_with_indices = ((n,i,j) for i, L2 in enumerate(L) for j, n in enumerate(L2))

# step 2: sort by value
sorted_L = sorted(L_with_indices, reverse=True)

# step 3: remove the value and keep the indices
result = [tup[1:] for tup in sorted_L]
# result: [(1, 0), (1, 1), (0, 1), (0, 0)]