【问题标题】:List of list sorting in Python elegant solutionPython优雅解决方案中的列表排序列表
【发布时间】:2019-02-05 14:42:08
【问题描述】:

我有以下代码按最后一个元素对列表列表进行排序:

a = [['a','num1','num2','num3'],['b','ind1','ind2','ind3'],['c',12,0,24],['d',0,0,0],['e',3,5,100]]

print(a)
b,c = a[:2],a[2:]
d= c.sort(key=lambda x: x[1])
e = b+d

print(b)
print(c)
print(d)
print(e)

我认为 e 会有排序列表。但它不起作用。 d 没有

我也试过下面的代码

a = [['a','num1','num2','num3'],['b','ind1','ind2','ind3'],['c',12,0,24],['d',0,0,0],['e',3,5,100]]
print(a)
b,c = a[:2],a[2:]
sorted(c,key=lambda x: x[-1], reverse=True)
d = b+c
print(d)

但在这种情况下,它无法排序并且似乎返回了原始列表。 我该如何解决这个问题?

【问题讨论】:

    标签: python-3.x sorting


    【解决方案1】:

    你可以使用itemgetter

     >>> from operator import itemgetter
    >>> L=[[0, 1, 'f'], [4, 2, 't'], [9, 4, 'afsd']]
    >>> sorted(L, key=itemgetter(2))
    [[9, 4, 'afsd'], [0, 1, 'f'], [4, 2, 't']]
    

    这里也可以使用 lambda 函数。

    a.sort(key= lambda x: x[3])
    

    但是在这种简单的情况下 lambda 函数比较慢

    【讨论】:

      猜你喜欢
      • 2018-03-11
      • 1970-01-01
      • 2018-01-21
      • 2018-04-28
      • 1970-01-01
      • 2011-06-06
      • 2020-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多