按列表列排序

时间:2016-02-29 21:11:06

标签: python

我有这样的列表:

list1 = [["A",5,2,8,3],["B",9,5,1,5]]

我试图通过第二列对其进行排序。我希望list1为

[["B",9,5,1,5],["A",5,2,8,3]]

因为9大于5对吗?我正在使用

sorted(lis1, key=lambda a : a[1])
然而,它并没有对它进行排序;它只是保持原样。为什么这不起作用?

3 个答案:

答案 0 :(得分:2)

sorted

  

从可迭代

中的项目返回新的排序列表

排序。

答案 1 :(得分:1)

你只需要扭转它:

list1 = [["A",5,2,8,3],["B",9,5,1,5]]
list1 = sorted(list1, key=lambda a : a[1], reverse=True)
print(list1)
# outputs [["B",9,5,1,5],["A",5,2,8,3]]

9> 5,之后会出现,除非你逆转。

答案 2 :(得分:0)

使用operator.itemgetter()函数:

Observable.range(1, 5)
    .groupBy(n -> n % 5)
    .flatMap(g -> g.toList())
    .lift(new MinRegularIntervalDelayOperator<Integer>(50L))
    .doOnNext(item -> {
      System.out.println(System.currentTimeMillis() - timeNow);
      System.out.println(item);
      System.out.println(" ");
    }).toList().toBlocking().first();

输出:

from operator import itemgetter

list1 = [["A",5,2,8,3],["B",9,5,1,5],["C",1,2,8,3]]

print(sorted(list1, key=itemgetter(1)))
print(sorted(list1, key=itemgetter(1), reverse=True))