原文: Python List Sorting – How to Order Lists in Python

在很多情况下,你可能希望在 Python 应用程序中对列表进行排序。

在本文中,我将向你展示如何根据你的需要对列表进行升序和降序排序。

Python 中的列表是什么

列表是 Python 中的一种数据类型,你可以在其中存储不同数据类型的多个值(包括嵌套列表)。

以下是列表示例:

numList = [1, 2, 3, 4, 5]

stringList = ["banana", "orange", "apple"]

mixedList = [1, "banana", "orange", [5, 6]]

你可以使用它们的索引位置访问列表中的项目。列表中的索引位置从 0 开始:

stringList = ["banana", "orange", "apple"]

print(stringList[1])
# "orange"

如何在 Python 中对列表进行排序

你可以使用 sort() 方法在 Python 中对列表进行排序。

sort() 方法允许你对列表中的项目进行排序,语法如下:

list.sort(reverse=True|False, key=sortFunction)

该方法接受两个可选参数:

  • reverse:如果为 True,则以相反的顺序(降序)对列表进行排序,如果为 False(默认情况下),则以常规顺序(升序)对列表进行排序
  • key:你提供的描述排序方法的函数

默认情况下,你可以按升序对字符串和数字进行排序,而无需将参数传递给此方法:

items = ["orange", "cashew", "banana"]

items.sort()
# ['banana', 'cashew', 'orange']

在上面,你可以看到排序列表首先有 b(在 banana 中),然后是 c(在 cashew 中),因为它在 b 之后,最后是 o(在 orange 中),按字母顺序排在后面。

请注意,此方法会修改原始数组。

对于降序,你可以传递 reverse 参数:

items = [6, 8, 10, 5, 7, 2]

items.sort(reverse=True)
# [10, 8, 7, 6, 5, 2]

通过将 True 传递给 reverse 参数,你会看到项目列表中的数字是反向排序的,即降序。

如何指定排序函数

如果你在字典列表中尝试此操作会怎样?让我们来看看:

items = [{
    'name': 'John',
    'age': 40
}, {
    'name': 'Mike',
    'age': 45
}, {
    'name': 'Jane',
    'age': 33
}, {
    'name': 'Asa',
    'age': 42
}]

items.sort()

你会得到一个报错,因为字典是不可排序的。你可以在此处使用 key 参数指定排序条件:

items = [
  {
  'name': 'John',
  'age': 40
  },
  {   
    'name': 'Mike',
    'age': 45
  },
  {   
    'name': 'Jane',
    'age': 33
  },
  {   
    'name': 'Asa',
    'age': 42
  }
]

def sortFn(dict):
  return dict['age']

items.sort(key=sortFn)
# [
#   {'name': 'Jane', 'age': 33},
#   {'name': 'John', 'age': 40},
#   {'name': 'Asa', 'age': 42},
#   {'name': 'Mike', 'age': 45}
# ]

正如你将在上面的代码块中注意到的那样,使用排序函数,我们已指定排序决定应基于每个字典中的 age 键。

如果在此处将 reverse 参数作为 True 传递,则排序的字典将按降序排列。

这是另一个使用排序函数的示例:

items = ["cow", "elephant", "duck"]

def sortFn(value):
    return len(value)

items.sort(key=sortFn, reverse=True)
# ['elephant', 'duck', 'cow']

在这种情况下,排序函数返回列表中值的长度作为排序过程的标准。通过将 reverse 设置为 True,你可以看到排序列表首先具有较长的字符串,然后是较短的字符串。

总结

在构建应用程序时,列表排序的场景有很多,可能是根据 last_opened 键对文件列表进行排序,也可能是根据 price 键对产品进行分类。如你所见,你可以在实际应用程序中使用许多标准。

在本文中,我们了解了如何使用不同的方法在 Python 中按升序和降序对列表进行排序。