对多个列表中的值进行排序

时间:2014-04-16 11:14:49

标签: python list sorting

目前,我有一个名为result的列表列表,其中包含这样的值,例如:

result[1] = [John,  0.32]
result[2] = [Mikey, 1.90]
result[3] = [Sarah, 1.31]
result[4] = [Nancy, 0.49]
result[5] = [Billy, 0.13]

但是,我想按照索引空间[1]中保存的数字的降序对其进行排序。因此系统将按该顺序返回值。我是否只需要使用sorted()函数并调用保存值的​​索引?我不需要求助于列表是否有必要,我只需要按降序输出值。

我该怎么做呢?

2 个答案:

答案 0 :(得分:5)

使用sorted功能中的key参数。

sorted(result, key = lambda x:x[1], reverse = True)

reverse = True确保项目按降序排序。这里需要注意的重要事项是key参数。

key = lambda x:x[1]

我们将lambda函数传递给key参数,该参数接受一个参数。 sortedresult中选取每个元素并将其传递给key函数。在我们的例子中,它是元组。 key函数返回元组中的第二项。因此,在排序时,元组中的第二项将用作元组本身的值。这意味着当我们进行comapre [John, 0.32][Mikey, 1.90]时,我们实际上只会比较0.321.90

sorted不会更改实际列表,但会创建新的排序列表。但是,如果您想对列表本身进行排序,那么您可以使用list.sort方法,就像这样

result.sort(key = lambda x:x[1], reverse = True)

答案 1 :(得分:0)

您可以使用sorted

执行此操作
new_list = sorted(old_list, key=lambda x: x[1], reverse=True)

或使用sort

old_list.sort(key=lambda x: x[1], reverse=True)