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

如何使用Lambda函数在Python中进行排序?

发布时间:2023-05-22 09:53:30

Python是一种高级编程语言,它为开发者提供了一个庞大的功能集,同时也可以被扩展来满足生产环境中的需求。在Python中,排序是一项基本操作,可以通过内置函数sorted()或sort()来完成。在某些情况下,我们可能需要自定义排序规则或者按复杂的条件排序,这时就可以使用Lambda函数。

Lambda函数是一种匿名函数,可以在需要时即时定义并使用。Lambda函数通常用于为map()、filter()等高阶函数提供简短、即时和强大的函数。

Lambda函数语法:lambda argument_list: expression

它由三部分组成,分别是:

- lambda关键字

- 参数列表

- 表达式

Lambda函数的返回值是表达式的结果。Lambda函数可用于任何需要函数对象的地方。

下面是使用Lambda函数进行排序的一些示例:

1.对字典列表按value值排序

我们可以使用Lambda函数创建一个排序规则,该规则按字典键的value值降序排序。

cars = [

    {'make': 'Ford', 'model': 'Mustang', 'year': 1964},

    {'make': 'Ford', 'model': 'Thunderbird', 'year': 1966},

    {'make': 'Chevrolet', 'model': 'Camaro', 'year': 1967},

    {'make': 'Chevrolet', 'model': 'Corvette', 'year': 1963}

]

sorted_cars = sorted(cars, key=lambda x: x['year'], reverse=True)

print(sorted_cars)

输出:

[{'make': 'Chevrolet', 'model': 'Camaro', 'year': 1967},

 {'make': 'Ford', 'model': 'Thunderbird', 'year': 1966},

 {'make': 'Ford', 'model': 'Mustang', 'year': 1964},

 {'make': 'Chevrolet', 'model': 'Corvette', 'year': 1963}]

2.按字符串长度排序

我们可以使用Lambda函数创建一个排序规则,该规则按输入的字符串长度从短到长排序。

words = ['apple', 'banana', 'cherry', 'date']

sorted_words = sorted(words, key=lambda x: len(x))

print(sorted_words)

输出:

['date', 'apple', 'cherry', 'banana']

3.对元组列表进行多个条件排序

我们可以使用Lambda函数创建一个排序规则,该规则按 个元素的逆序和第二个元素的正序进行排序。

items = [(1, 'apple'), (1, 'banana'), (2, 'cherry'),

         (3, 'date'), (2, 'elderberry'), (3, 'fig')]

sorted_items = sorted(items, key=lambda x: (-x[0], x[1]))

print(sorted_items)

输出:

[(3, 'date'),

 (3, 'fig'),

 (2, 'cherry'),

 (2, 'elderberry'),

 (1, 'apple'),

 (1, 'banana')]

4.对字典按多个键进行排序

我们可以使用Lambda函数创建一个排序规则,该规则按 键逆序和第二键正序进行排序。

items = [{'name': 'Mary', 'age': 28, 'weight': 150},

         {'name': 'John', 'age': 25, 'weight': 170},

         {'name': 'Beth', 'age': 32, 'weight': 140},

         {'name': 'Bob', 'age': 23, 'weight': 155},

         {'name': 'Maggie', 'age': 31, 'weight': 135}]

sorted_items = sorted(items, key=lambda x: (-x['age'], x['weight']))

print(sorted_items)

输出:

[{'name': 'Beth', 'age': 32, 'weight': 140},

 {'name': 'Maggie', 'age': 31, 'weight': 135},

 {'name': 'Mary', 'age': 28, 'weight': 150},

 {'name': 'John', 'age': 25, 'weight': 170},

 {'name': 'Bob', 'age': 23, 'weight': 155}]

总结:

在Python中,Lambda函数可以很方便地用于排序。使用Lambda函数可以自定义排序规则,并且可以在需要时即时定义并使用。这可以帮助开发人员以编程方式轻松解决排序问题。