代码之家  ›  专栏  ›  技术社区  ›  Adam_G

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

  •  0
  • Adam_G  · 技术社区  · 6 年前

    如果我有一个列表列表,我知道我可以使用发布的解决方案获得最大项目的索引 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 回复  |  直到 6 年前
        1
  •  3
  •   Aran-Fey Swapnil    6 年前

    你基本上只需要更换 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)]