Tutorial Study Image

Python sorted()

内置函数 `sorted()` 返回给定可迭代对象的排序列表。排序可以是升序或降序。如果可迭代对象是字符串,它会按字母顺序排序;如果是数字,则按数字顺序排序。如果可迭代对象同时包含字符串和数字,则无法排序。


sorted(iterable, key=None, reverse=False) #where iterable may be string, tuple, list,set, dictionary frozen set) 
 

sorted() 参数

接受三个参数。根据键函数返回的值,我们可以按如下方式对给定可迭代对象进行排序:

sorted(iterable, key=len)

参数 描述 必需/可选
可迭代对象 一个序列(字符串、元组、列表)或集合(集合、字典、冻结集合)或任何其他迭代器。 必需
reverse 如果为 True,则排序后的列表将反转(或按降序排序)。如果未提供,默认为 False。 可选
一个用作排序比较键的函数。默认为 None。 可选

sorted() 返回值

此 sorted() 方法类似于 sort(),区别在于 sort() 不返回任何值。

输入 返回值
可迭代对象 排序列表

Python 中 sorted() 方法的示例

示例 1:如何对字符串、列表和元组进行排序


# vowels list pyth 'a', 'u', 'o', 'i']
print(sorted(python_list))

# string pyth
print(sorted(python_string))

# vowels tuple pyth 'a', 'u', 'o', 'i')
print(sorted(python_tuple))
 

输出

['a', 'e', 'i', 'o', 'u']
['P', 'h', 'n', 'o', 't', 'y']
['a', 'e', 'i', 'o', 'u']

示例 2:如何按降序排序


# set pyth 'a', 'u', 'o', 'i'}
print(sorted(python_set, reverse=True))

# dictionary pyth 1, 'a': 2, 'u': 3, 'o': 4, 'i': 5}
print(sorted(python_dict, reverse=True))

# frozen set
frozen_set = frozenset(('e', 'a', 'u', 'o', 'i'))
print(sorted(frozen_set, reverse=True))
 

输出

['u', 'o', 'i', 'e', 'a']
['u', 'o', 'i', 'e', 'a']
['u', 'o', 'i', 'e', 'a']

示例 3:如何使用带有键函数的 sorted() 对列表进行排序


# take the second element for sort
def take_second(elem):
    return elem[1]


# random list
randomnum = [(2, 2), (3, 4), (4, 1), (1, 3)]

# sort list with key
sorted_keylist = sorted(randomnum, key=take_second)

# print list
print('Sorted list:', sorted_keylist)
 

输出

Sorted list: [(4, 1), (2, 2), (1, 3), (3, 4)]

示例 4:如何使用多个键进行排序


# Nested list of student's info in a Science Olympiad
# List elements: (Student's Name, Marks out of 100, Age)

student_list = [
    ('Alison', 50, 18),
    ('Terence', 75, 12),
    ('David', 75, 20),
    ('Jimmy', 90, 22),
    ('John', 45, 12)
]
 

输出

[('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('John', 45, 12)]