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

Python3中的sorted()函数可以按指定的规则对一个可迭代对象进行排序,默认是按照对象元素大小进行排序。但是,有时候我们需要按照自定义的规则进行排序,比如按照一个对象的某个属性进行排序。这时我们可以使用sorted()函数的key参数和cmp参数来实现自定义排序。

key参数实现自定义排序

key参数用来指定一个函数,此函数会在每个元素上执行,将元素转换为排序用的键值,最后对键值进行排序。

例如,我们有一个存储员工信息的列表,每个员工信息是一个字典。现在要按照员工工资的高低进行排序,可以使用key参数实现:

employees = [
    {'name': 'Tom', 'age': 30, 'salary': 5000},
    {'name': 'Jack', 'age': 25, 'salary': 8000},
    {'name': 'Mike', 'age': 35, 'salary': 3000},
    {'name': 'Mary', 'age': 28, 'salary': 6000}
]

# 按工资从高到低排序
sorted_employees = sorted(employees, key=lambda x: x['salary'], reverse=True)
print(sorted_employees)

输出结果为:

[{'name': 'Jack', 'age': 25, 'salary': 8000},
 {'name': 'Mary', 'age': 28, 'salary': 6000},
 {'name': 'Tom', 'age': 30, 'salary': 5000},
 {'name': 'Mike', 'age': 35, 'salary': 3000}]

上述代码中,我们使用lambda函数来指定排序规则,lambda函数的返回值是字典中的salary值,即按照工资进行排序。由于需要从高到低排序,因此需要设置reverse=True。

注意,在有些情况下,key函数也可以是一个自定义函数,它返回的值将用作排序关键字。

cmp参数实现自定义排序

cmp参数用来指定一个比较函数,此函数接受两个参数(两个需要比较的元素),如果第一个元素比第二个元素大,则返回正整数,如果小则返回负整数,相等则返回0。默认情况下,cmp为None,表示使用Python内置的比较函数进行排序。

下面来看一个使用cmp参数实现自定义排序的例子,按照员工的年龄进行排序:

employees = [
    {'name': 'Tom', 'age': 30, 'salary': 5000},
    {'name': 'Jack', 'age': 25, 'salary': 8000},
    {'name': 'Mike', 'age': 35, 'salary': 3000},
    {'name': 'Mary', 'age': 28, 'salary': 6000}
]

def employee_cmp(e1, e2):
    if e1['age'] > e2['age']:
        return 1
    elif e1['age'] < e2['age']:
        return -1
    else:
        return 0

# 按照年龄从小到大排序
sorted_employees = sorted(employees, cmp=employee_cmp)
print(sorted_employees)

输出结果为:

[{'name': 'Jack', 'age': 25, 'salary': 8000},
 {'name': 'Mary', 'age': 28, 'salary': 6000},
 {'name': 'Tom', 'age': 30, 'salary': 5000},
 {'name': 'Mike', 'age': 35, 'salary': 3000}]

上述代码中,我们定义了一个自定义的比较函数employee_cmp。该函数接受两个参数e1和e2,比较它们的age值,并返回相应的结果。接着,我们使用sorted()函数对employees进行排序,传入参数cmp=employee_cmp,即可按照自定义规则进行排序。

值得一提的是,cmp在Python3中已经被移除,如果要使用自定义排序规则,必须使用key参数。因此,应该优先使用key参数,而非cmp参数。

以上就是实现Python3的sorted如何实现自定义排序标准的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python3 sorted 如何实现自定义排序标准 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • Python判断文件或文件夹是否存在的三种方法

    当我们编写Python脚本时,经常需要判断某个文件或文件夹是否存在,这在数据处理、文件操作等应用场景中尤其常见。本文将介绍Python中判断文件或文件夹是否存在的三种方法。 方法一:使用os模块中的path.exists()函数 os模块是Python中对操作系统进行调用的接口,其中的path模块提供了一些用于处理文件或者目录路径的函数。path.exist…

    python 2023年6月2日
    00
  • Python 爬取微博热搜页面

    下面是“Python 爬取微博热搜页面”的完整攻略: 1. 前置准备 在开始爬取微博热搜页面之前,我们需要进行以下几个前置准备: 1.1 安装 Python 由于我们使用 Python 进行爬虫开发,所以需要在电脑上安装 Python 环境。建议采用 Python3 版本,你可以从官网下载安装包进行安装。 1.2 安装 requests 库 requests…

    python 2023年6月3日
    00
  • Python实现自动生成请假条

    下面我将为您详细讲解Python实现自动生成请假条的完整攻略。 简介 Python实现自动生成请假条是一种基于Python语言编写的自动化脚本,旨在快速生成规范化的请假条文档,节约时间、提升效率。 开发环境 Python 3.6及以上版本 docx模块(用于操作docx文档) 实现步骤 安装docx模块 pip install python-docx 创建一…

    python 2023年5月19日
    00
  • python中列表的常见操作梳理总结(二)

    Python中列表的常见操作梳理总结(二) 在Python中,列表是一种非常常用的数据类型。列表是一种有序的集合,可以包含任意类型,例如、字符串、列表等。本文将继续介绍Python列表常见操作,并演示如何使用列表现一些常见的任务。 列表的复制 要复制列表,我们可以使用切片或copy()函数。例如: # 复制列表 my_list = [1, , 3new_li…

    python 2023年5月13日
    00
  • 浅谈Python xlwings 读取Excel文件的正确姿势

    浅谈Pythonxlwings读取Excel文件的正确姿势 介绍 Pythonxlwings是一个Python库,它使得Python可以与Excel文件进行互动。可以使用xlwings来读取、写入或修改Excel文件中的数据,同时也可以控制Excel应用程序的行为。 安装 安装xlwings最简单的方法是使用pip,命令如下: pip install xlw…

    python 2023年5月13日
    00
  • Python3.5 + sklearn利用SVM自动识别字母验证码方法示例

    Python3.5 + sklearn利用SVM自动识别字母验证码方法示例 在本文中,我们将介绍如何使用Python3.5和sklearn库,来使用基于支持向量机(SVM)的方法,自动识别字母验证码。 1. 库的安装 首先,我们需要安装Python3.5和sklearn库。如果您是使用Anaconda发行版,可以通过以下命令来安装这些库: conda ins…

    python 2023年5月18日
    00
  • 详解Python PIL Image.thumbnail() 方法

    Pillow是Python的一个图像处理库,其中的Image模块提供了多种处理图像的方法,其中之一就是thumbnail()方法,接下来我们就来详细讲解一下。 方法概览 Image.thumbnail(size, resample=None) size: 缩略图尺寸,是一个二元元组,形如(width, height),注意这里的width和height都不应…

    python-answer 2023年3月25日
    00
  • Python 以及如何从 Selenium 元素 WebElement 对象中获取文本?

    【问题标题】:Python and how to get text from Selenium element WebElement object?Python 以及如何从 Selenium 元素 WebElement 对象中获取文本? 【发布时间】:2023-04-03 10:25:01 【问题描述】: 我正在尝试使用 Selenium 方法获取 html…

    Python开发 2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部