本文将介绍如何在Python中对二维列表进行排序。
一、升序还是降序?
在使用Python对二维列表进行排序时,需要明确想要升序还是降序排列。我们可以使用sort函数的reverse参数来控制排序方式,当reverse=True时,即为降序排列;当reverse=False时,即为升序排列。
lst = [[1,3],[5,2],[8,6]] lst.sort(reverse=False) # 经过升序排序后的lst为[[1, 3], [5, 2], [8, 6]]
二、按照指定的列进行排序
在实际开发中,可能需要将二维列表按照某些列进行排序。我们可以使用sort函数的key参数,通过key参数传递一个函数,来指定排序时以哪些列为准进行排序。下面的代码演示了如何以第二列为准进行排序:
lst = [[1,3],[5,2],[8,6]] lst.sort(key=lambda x: x[1],reverse=False) # 经过排序后的lst为[[5, 2], [1, 3], [8, 6]] # lambda x: x[1]的意思是返回x的第二个元素值,即排序时以第二列为准
三、根据多个列进行排序
有时,我们还需要对二维列表按照多个列进行排序。这时,可以使用sorted函数的key参数结合operator模块的itemgetter函数来实现。下面的代码演示了如何以第一列和第二列为准进行排序:
import operator lst = [[1,3],[5,2],[8,6]] lst = sorted(lst, key=operator.itemgetter(0, 1), reverse=False) # 经过排序后的lst为[[1, 3], [5, 2], [8, 6]] # itemgetter(0, 1)的意思是对每个元素,返回元素的第一列和第二列作为排序准则
四、针对字符串类型的列排序
当二维列表中有字符串类型的列需要排序时,可以使用locale模块中的strcoll函数,该函数可以按照当前环境的文本排序规则来对字符串进行排序。下面的代码演示了如何按照第二列字符串内容进行排序:
import locale lst = [["a", "c"], ["e", "b"], ["d", "a"]] locale.setlocale(locale.LC_COLLATE, "zh_CN.UTF-8") lst = sorted(lst, key=operator.itemgetter(1), cmp=locale.strcoll) # 经过排序后的lst为[["d", "a"], ["e", "b"], ["a", "c"]] # 使用locale.strcoll进行排序时需要保证环境中存在相应的排序规则
五、对元素为字典的二维列表进行排序
在Python中可以使用字典来表示数据,如果二维列表中包含元素为字典的情况,也可以对其进行排序。下面的代码演示了如何以字典的键进行排序:
lst = [{"name":"Tom","age":20},{"name":"Jerry","age":18},{"name":"Alice","age":22}] lst = sorted(lst,key=lambda x:x["name"]) # 经过排序后的lst为[{"name":"Alice","age":22},{"name":"Jerry","age":18},{"name":"Tom","age":20}] # lambda x:x["name"]的意思是返回x字典的name键的值作为排序准则