欢迎访问宙启技术站
智能推送

如何在Python中使用sorted()函数来排序列表或字典?

发布时间:2023-06-12 17:31:12

sorted()函数是Python提供的一种内置函数,用来进行可迭代对象(列表、字典、元组、集合等)的排序操作。它可以对普通的可迭代对象进行排序,也可以排序自定义数据类型的实例对象。在Python 2中,sorted()函数返回的是排序后的新列表,而原始列表没有发生改变;在Python 3中,sorted()函数返回的仍然是排序后的新列表,但原始列表也会发生改变。本文将详细介绍如何在Python中使用sorted()函数来进行列表和字典的排序操作。

一、针对列表的排序

在Python中,sorted()函数可以对列表进行排序,语法如下:

sorted(iterable, key=None, reverse=False)

其中,iterable表示要排序的列表、字典等可迭代对象;key表示可迭代对象中的每个元素按照某个关键字进行排序;reverse表示是否降序排列,默认为False,表示升序排列。

下面是对列表进行默认升序排列的例子:

a = [3, 5, 1, 4, 2]
b = sorted(a)
print(b)    # [1, 2, 3, 4, 5]

这里创建一个列表a,然后调用sorted()函数对其进行排序,并将排序后的新列表b输出。

下面是对列表进行降序排列的例子:

a = [3, 5, 1, 4, 2]
b = sorted(a, reverse=True)
print(b)    # [5, 4, 3, 2, 1]

这里仅仅在sorted()函数中添加了reverse=True参数用来表示降序排列。

如果要按照某个关键字对列表进行排序,可以使用key参数。例如,下面是对一组字符串按照长度进行排序的例子:

a = ['red', 'green', 'blue', 'yellow']
b = sorted(a, key=len)
print(b)    # ['red', 'blue', 'green', 'yellow']

这里使用了len()函数来作为key的值,表示以字符串的长度进行排序。

二、针对字典的排序

在Python中,字典是一种无序的键值对数据类型,它们默认不支持排序。如果要对字典进行排序,可以将其转换成列表形式,然后用sorted()函数排序,再将其转换回字典。下面是对一个字典按照键(即key)进行排序的例子:

a = {'a': 3, 'd': 2, 'c': 1, 'b': 5}
b = sorted(a.items())
print(b)    # [('a', 3), ('b', 5), ('c', 1), ('d', 2)]

# 转换成有序字典
from collections import OrderedDict
c = OrderedDict(b)
print(c)    # OrderedDict([('a', 3), ('b', 5), ('c', 1), ('d', 2)])

这里将字典a转换成了一个元素为元组的列表,并使用sorted()函数对其按照键进行升序排列。排列后的结果是一个由元组组成的列表。最后,将该列表转换成了一个有序字典。请注意,这里使用了collections模块中的OrderedDict()函数来创建序列化字典c(即有序字典)。

按值(即value)进行排序也是类似的,请看下面这个例子:

a = {'a': 3, 'd': 2, 'c': 1, 'b': 5}
b = sorted(a.items(), key=lambda x: x[1])
print(b)    # [('c', 1), ('d', 2), ('a', 3), ('b', 5)]

# 转换成有序字典
from collections import OrderedDict
c = OrderedDict(b)
print(c)    # OrderedDict([('c', 1), ('d', 2), ('a', 3), ('b', 5)])

这里使用了lambda表达式来实现出每个元组中第二个元素(即value)作为排序的依据。

总结

以上是Python中,用sorted()函数进行列表和字典排序的方法。sorted()函数的灵活性使得其可以处理各种数据结构,并且可以根据自定义的关键字进行排序。在处理大量数据时,正确使用sorted()函数能显著提高代码质量,提高程序效率。需要注意的是,sorted()函数能处理的数据类型必须是可迭代的对象。