迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 错误 TypeError: Must Use Keyword Argument for Key Function

作者:迹忆客 最近更新:2023/07/05 浏览次数:

本文介绍对项目列表进行排序并在 sort() 方法中使用 lambda 函数的简单而强大的方法。 我们还讨论了为什么我们无法执行 Python 的 sort() 方法。


在 Python 中的 sort() 方法中使用键参数的正确方法

有序数据是许多 Web 服务的核心。 当我们执行搜索时,算法会返回相关结果的有序列表,而在线购物时,我们通常希望按价格对产品进行排序。

当我们查看日历时,我们希望约会按时间顺序排序。

让我们从一个经典的例子开始,按字母顺序排序。 我们将使用六种碱土金属的列表。

它们按原子序数排序,但如果我们想按字母顺序对它们排序怎么办? 对于列表,我们调用 sort() 方法。

sort() 方法假设您希望数据按字母顺序升序排序。 如果你想以相反的顺序对数据进行排序,你可以调用 sort() 方法并指定reverse等于True。

代码:

Earth_Metals=["Berylium","Magnisium","Calcium","strontium","Barium","Radium"]
Earth_Metals.sort()
print(Earth_Metals)

如果您查看该列表,您会发现名称按相反的字母顺序排序。

输出:

['Barium', 'Berylium', 'Calcium', 'Magnisium', 'Radium', 'strontium']

让我们重复这个例子,只不过这一次,我们将元素存储在元组而不是列表中。 当我们尝试对元组进行排序时,Python 会抱怨并引发异常。

出现此错误的原因是元组是不可变的对象。 它们无法改变,而排序会改变一切。

Earth_Metals=("Berylium","Magnisium","Calcium","strontium","Barium","Radium")
Earth_Metals.sort()
print(Earth_Metals)

输出:

AttributeError: 'tuple' object has no attribute 'sort'

在查看更复杂的示例之前,让我们先看一下列表排序方法的 help() 文本。

sort 方法接受两个关键字参数:key 和reverse。 默认情况下,reverse 设置为 false,这意味着数据将按升序排序。

代码:

help(list.sort)

输出:

列表中排序方法的帮助文本

让我们关注行动所在的关键论点。 要使用 key 参数,您需要传入一个函数,该函数将用于确定要排序的值。

假设我们正在构建一个用于处理订单的应用程序,并且我们有这个订单项目列表,并且此列表中的每个项目都是一个元组,其中包含产品名称及其价格这两项。 让我们看看如果我们对此列表进行排序并打印项目会发生什么。

代码:

items=[("product1",10),
      ("product2",9),
      ("product3",12)]
items.sort()
print(items)

输出:

[('product1', 10), ('product2', 9), ('product3', 12)]

当我们执行代码时,没有任何变化,因为 Python 不知道如何对这个列表进行排序。 在这种情况下,我们需要定义Python的列表排序函数。

我们将通过使用 lambda 表达式或匿名函数来使其更清晰,因此我们不必先定义该函数然后再传递它。 相反,我们添加 lambda,编写 lambda 函数的语法如下所示:我们添加参数冒号,然后添加表达式。

我们只有一个参数; 然后,在冒号(:)之后,我们返回一项为一。

代码:

items=[("product1",10),
      ("product2",9),
      ("product3",12)]
items.sort(key=lambda item:item[1])
print(items)

输出:

[('product2', 9), ('product1', 10), ('product3', 12)]

一些初学者尝试为关键参数提供多个参数值,但会收到错误,因为关键参数只接受一个值。 我们无法执行代码的另一个原因是我们直接传递了函数而不是使用 key 参数。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Python 中错误 ValueError: No JSON Object Could Be Decoded

发布时间:2023/07/06 浏览次数:123 分类:Python

我们将讨论名称错误、如何将 Python 对象编码为 JSON,以及如何将相邻字符串解码为 Python 对象。 我们还去了解一下为什么解析JSON数据失败。ValueError: No JSON Object Could Be Decoded

Python 错误 Can't Find Main Module

发布时间:2023/07/06 浏览次数:141 分类:Python

在本文中,我们将讨论 Python 中找不到“__main__”模块的错误、其原因以及如何解决该错误。解决Python中can't find '__main__' module错误

Python File Not Found 错误

发布时间:2023/07/06 浏览次数:146 分类:Python

FileNotFoundError 是一个常见错误,当 Python 无法找到要打开的文件时就会出现该错误。 本文将讨论Python中的 FileNotFoundError 及其解决方案。Python 中的文件 I/O

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便