Python中如何使用sorted()函数对序列进行排序

1. Python中的sorted()函数

在Python中,如果需要对任何可迭代的对象进行排序,都可以使用内置的sorted()函数。sorted()函数可以接受多种不同的参数,其中最常见的是列表(list),但也可以是元组(tuple)、集合(set)和字典(dict)等。

sorted()函数接受一个可迭代的对象作为参数,并且返回一个排序后的列表。这个排序后的列表并不会影响原来的对象。例如:

lst = [3, 2, 1]

sorted_lst = sorted(lst)

print(sorted_lst) # [1, 2, 3]

print(lst) # [3, 2, 1]

从上面的例子中可以看出,sorted()函数返回了一个新的排序后的列表,而不是对原来的列表进行排序。

2. 对列表进行升序排序

在默认情况下,sorted()函数会对列表进行升序排序,也就是从小到大的排序。

2.1 对数字列表进行升序排序

下面的例子中,我们定义了一个数字列表,然后使用sorted()函数对它进行升序排序:

lst = [5, 2, 9, 1, 7]

sorted_lst = sorted(lst)

print(sorted_lst) # [1, 2, 5, 7, 9]

从上面的例子中可以看出,sorted()函数对数字列表进行升序排序的结果是从小到大排列的。

2.2 对字符串列表进行升序排序

sorted()函数同样可以对字符串列表进行升序排序。下面的例子中,我们定义了一个字符串列表,并使用sorted()函数对它进行排序:

lst = ['apple', 'cat', 'boy', 'dog']

sorted_lst = sorted(lst)

print(sorted_lst) # ['apple', 'boy', 'cat', 'dog']

从上面的例子中可以看出,sorted()函数对字符串列表进行排序时,是按照ASCII值从小到大进行排序的。

3. 对列表进行降序排序

如果需要对列表进行降序排序,可以使用sorted()函数的reverse参数。reverse参数默认是False,表示对列表进行升序排序。如果将reverse参数设置为True,则对列表进行降序排序。

3.1 对数字列表进行降序排序

下面的例子中,我们定义了一个数字列表并对它进行降序排序:

lst = [5, 2, 9, 1, 7]

sorted_lst = sorted(lst, reverse=True)

print(sorted_lst) # [9, 7, 5, 2, 1]

从上面的例子中可以看出,当reverse参数为True时,sorted()函数对数字列表进行降序排序的结果是从大到小排列的。

3.2 对字符串列表进行降序排序

对于字符串而言,如果需要进行降序排序,则需要设置一个自定义的key函数。这个key函数接受一个元素,返回一个用于排序的关键字。

下面的例子中,我们定义了一个字符串列表,并使用sorted()函数对它进行降序排序:

lst = ['apple', 'boy', 'zip', 'dog']

sorted_lst = sorted(lst, key=lambda x: x, reverse=True)

print(sorted_lst) # ['zip', 'dog', 'boy', 'apple']

在这个例子中,对字符串进行排序时,我们使用了一个lambda函数作为key函数。这个lambda函数接受一个字符串,返回这个字符串本身。因为默认情况下,对字符串进行排序是按照ASCII值从小到大的,所以需要设置reverse参数为True,从而实现降序排序。

4. 对字典进行排序

如果想要对字典进行排序,可以使用items()方法将字典转化为元组列表,然后再使用sorted()函数进行排序。使用items()方法将字典转化为元组列表时,元组的第一个元素是字典中的key,第二个元素是对应的value。

4.1 对字典按键值进行升序排序

下面的例子中,我们定义了一个字典,并对它按照键值进行升序排序:

dct = {'dog': 3, 'cat': 2, 'apple': 5, 'boy': 1}

sorted_dct = sorted(dct.items(), key=lambda x: x[0])

print(sorted_dct) # [('apple', 5), ('boy', 1), ('cat', 2), ('dog', 3)]

在这个例子中,我们使用了一个lambda函数作为key函数,返回元组中的第一个元素,也就是字典中的键key。这个例子中是按照字典中的键进行排序的。

4.2 对字典按键值进行降序排序

如果想要对字典进行降序排序,则需要将key函数中返回的元素作为关键字,并设置reverse参数为True。

下面的例子中,我们定义了一个字典,并对它按照键值进行降序排序:

dct = {'dog': 3, 'cat': 2, 'apple': 5, 'boy': 1}

sorted_dct = sorted(dct.items(), key=lambda x: x[0], reverse=True)

print(sorted_dct) # [('dog', 3), ('cat', 2), ('boy', 1), ('apple', 5)]

在这个例子中,我们将key函数中返回的元素作为关键字,并设置reverse参数为True。这个例子中是按照字典中的键进行降序排序的。

4.3 对字典按值进行排序

如果想要对字典按照值进行排序,同样需要将key函数中返回的元素设置为字典中的值。下面的例子中,我们定义了一个字典,并按照值进行排序:

dct = {'dog': 3, 'cat': 2, 'apple': 5, 'boy': 1}

sorted_dct = sorted(dct.items(), key=lambda x: x[1])

print(sorted_dct) # [('boy', 1), ('cat', 2), ('dog', 3), ('apple', 5)]

在这个例子中,我们使用了一个lambda函数作为key函数,返回元组中的第二个元素,也就是字典中的值。这个例子按照字典中的值进行排序的。

5. 总结

本文简单介绍了Python中的sorted()函数,并通过不同的例子演示了如何使用sorted()函数对数字列表、字符串列表和字典进行排序。

在使用sorted()函数时,可以使用reverse参数实现升序或降序排列。对于复杂的排序,可以使用自定义的key函数指定排序规则。

可以用sorted()函数对各种可迭代对象进行排序,其实例代码的应用非常广泛。

后端开发标签