按多个字段对 Python 列表进行排序
按单个字段对 Python 列表进行排序是一项常见任务,但如果您需要怎么办按多个字段排序?
考虑从排序的 CSV 创建的以下列表file:
list1 = sorted(csv1, key=operator.itemgetter(1))
这按第二个字段对列表进行排序。但是,如果您想先按第一个字段排序,然后按第二个字段排序怎么办?
解决方案是使用 lambda 函数 作为排序()函数的关键参数。 lambda 函数是一个匿名函数,可用于定义简单的排序标准。在这种情况下,lambda 函数采用单个参数,该参数表示列表中的一个元素,并返回一个包含要排序的两个字段的元组。
例如,要按第一个和第二个字段,您可以使用以下 lambda 函数:
sorted_list = sorted(list1, key=lambda x: (x[0], x[1]))
此 lambda 函数返回一个包含列表元素的第一个和第二个字段的元组。然后列表按该元组排序,这会导致列表首先按第一个字段排序,然后按第二个字段排序。
您还可以使用 lambda 函数按一个字段升序和另一个字段降序排序。例如,要按第一个字段升序和第二个字段降序对列表进行排序,可以使用以下 lambda 函数:
sorted_list = sorted(list1, key=lambda x: (x[0], -x[1]))
此 lambda 函数返回一个包含列表元素的第一个字段和第二个字段的负值。然后列表按该元组排序,这会导致列表按第一个字段升序和第二个字段降序排序。
以上是如何按多个字段对 Python 列表进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!