如何在 Python 中使用 lambda 进行排序

新手上路,请多包涵

我正在尝试按属性对一些值进行排序,如下所示:

 a = sorted(a, lambda x: x.modified, reverse=True)

我收到此错误消息:

 <lambda>() takes exactly 1 argument (2 given)

为什么?我如何解决它?


这个问题最初是为 Python 2.x 编写的。在 3.x 中,错误消息会有所不同: TypeError: sorted expected 1 argument, got 2

原文由 Niklas Rosencrantz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
1 个回答

利用

a = sorted(a, key=lambda x: x.modified, reverse=True)
#             ^^^^

在 Python 2.x 上, sorted 函数按以下顺序获取其参数:

 sorted(iterable, cmp=None, key=None, reverse=False)

因此,如果没有 key= ,您传入的函数将被视为 cmp 接受 2 个参数的函数。

原文由 kennytm 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题