python3 sorted 如何实现自定义排序标准

  • Post category:Python

Python3中的sorted()函数可以对列表、元组、集合等可迭代对象进行排序,而自定义排序标准是sorted()函数的一个重要参数,这个参数可以让你按照自定义的规则对数据进行排序。本文将详细讲解如何使用sorted()函数实现自定义排序标准。

实现自定义排序标准的方法

使用Python3中的sorted()函数进行自定义排序标准,就需要用到它的key参数。sorted()函数的key参数接受一个函数作为参数,这个函数将对元素进行一定的转换后再进行排序。可以通过这个函数进行自定义排序标准的实现。

举个例子,如果我们有一个列表,列表中的每个元素都是字符串, 要按照最后一个字符排序:

lst = ["aa", "bc", "dc", "ab", "ca"]
sorted_lst = sorted(lst, key=lambda x: x[-1])
print(sorted_lst)
# 输出: ['aa', 'ab', 'ca', 'bc', 'dc']

在这个例子中,我们使用了lambda表达式来定义了自定义排序标准。lambda表达式在这里就是将每个字符串的最后一个字符作为排序的标准来排序。

当然,除了lambda表达式外,我们也可以使用一个单独的函数来作为自定义排序标准。举个例子,如果我们想要将一个整数列表按照其绝对值的大小进行排序,可以如下定义函数并传入给sorted()函数的key参数:

def sort_by_abs(val):
    return abs(val)

lst = [-3, 5, -1, 8, 2, -7]
sorted_lst = sorted(lst, key=sort_by_abs)
print(sorted_lst)
# 输出:[-1, 2, -3, 5, -7, 8]

在这个例子中,我们定义了一个名为sort_by_abs的函数作为自定义排序标准,这个函数接受一个参数val,返回其绝对值。然后将这个函数传给了sorted()函数的key参数中。

总结

Python3中的sorted()函数可以非常方便地对可迭代对象进行排序。通过传入key参数,我们可以定义一定的函数来作为自定义排序标准。这个函数将对元素进行转换后再进行排序,使得我们可以按照自己的需求对元素进行排序。

示例

示例1:根据字典的value排序

dct = {"a":3, "b":1, "c":4, "d":2}
sorted_dct = dict(sorted(dct.items(), key=lambda x:x[1]))
print(sorted_dct)
# 输出: {"b":1, "d":2, "a":3, "c":4}

在这个例子中,我们使用lambda表达式来定义排序标准,将字典按照value进行排序。sorted()函数返回的是一个由元组构成的列表,其中每个元组的第一个元素是key,第二个元素是value。我们将这个由元组构成的列表再转换成了一个字典对象。

示例2:根据元组的第二个元素进行排序

tup_lst = [(1, 5), (2, 3), (3, 7), (4, 2), (5, 6)]
sorted_tup_lst = sorted(tup_lst, key=lambda x:x[1])
print(sorted_tup_lst)
# 输出: [(4, 2), (2, 3), (1, 5), (5, 6), (3, 7)]

在这个例子中,我们使用lambda表达式来定义排序标准,将元组列表按照其第二个元素进行排序。需要注意的是,即使使用了lambda表达式,返回的仍然是元组的列表。