基本信息
文件名称:Python 中 key 参数的含义及用法.docx
文件大小:18.37 KB
总页数:10 页
更新时间:2025-05-22
总字数:约4千字
文档摘要

Python中key参数的含义及用法

哈喽大家好,我是咸鱼

我们在使用sorted()或map()函数的时候,都会看到里面有一个key参数

其实这个key参数也存在于其他内置函数中(例如min()、max()等),那么我们今天就来了解一下key参数的含义以及用途吧!

原文:/p/the-key-to-the-key-parameter-in-python

sorted()中的key

我们来看下面这段代码:

some_numbers=[

3.14159,

2.71828,

6.022e23,

6.626e-34,

299_792_458,

6.674e-11,

1.61803,

reordered_numbers=sorted(some_numbers)

print(*reordered_numbers,sep=\n)

reordered_numbers=sorted(some_numbers)这一行代码使用Python的内置函数sorted()对some_numbers列表中的数值进行排序

*reordered_numbers将列表中的元素作为参数传递给print()函数,其中解包操作符*逐个解包列表中的元素,这相当于在括号内直接用逗号分隔每个元素

输出如下:

6.626e-34

6.674e-11

1.61803

2.71828

3.14159

299792458

6.022e+23

如果我们把要排序的元素由【数字】改成【名字(字符串)】,看下会发生什么

some_names=[

Robert,

Ishaan,

Max,

Trevor,

Alexandra,

Albert,

Christine,

reordered_names=sorted(some_names)

print(*reordered_names,sep=\n)

输出如下:

Albert

Alexandra

Christine

Ishaan

Robert

Trevor

可以看到是按照名字的字母顺序进行排序,那如果我们想要根据名称的长度来进行排序呢?

也就是说,我想自己定义排序的规则,这便是key参数的使用场景了

我们可以把自定义的规则用函数的形式表示出来,然后再把函数名作为key参数的值

some_names=[

Robert,

Ishaan,

Max,

Trevor,

Alexandra,

Albert,

Christine,

reordered_names=sorted(some_names,key=len)

print(*reordered_names,sep=\n)

首先列表中some_names的每个元素都作为参数传递给函数len(),然后sorted()使用len()返回的值来确定元素的顺序

输出如下:

Robert

Ishaan

Trevor

Albert

Alexandra

Christine

上面我们说过可以把自定义的规则用函数的形式表示出来,然后再把函数名作为key参数的值

这里的函数可以是:

内置函数

自定义函数

匿名函数(lambda)

下面是一个自定义函数的例子

some_names=[

Robert,

Ishaan,

Max,

Trevor,

Alexandra,

Albert,

Christine,

defget_number_of_a_s(item):

returnitem.lower().count(a)

reordered_names=sorted(some_names,key=get_number_of_a_s)

print(*reordered_names,sep=\n)

函数get_number_of_a_s()将输入字符串转换为小写,并计算字母a的出现次数。该函数返回此计数,用于sorted()确定新列表中元素的顺序。输出如下:

Robert

Trevor

Christine

Albert

Ishaan

Alexandra

由于sorted()通过按升序对数值进行排序来处理数值,因此没有a的名称首先出现,因为.count(a)这些名称的返回0

Max并且是Albert下一个,因为它们包