【问题标题】:Python sort with key=lambda gets TypeError使用 key=lambda 的 Python 排序得到 TypeError
【发布时间】:2014-05-02 08:46:39
【问题描述】:

我正在尝试根据每个对象的数据属性值对 Python 3.4 中的对象列表进行排序。如果我使用

db[count].sort(key=lambda a: a.data)

一切正常。但是,我希望排序不区分大小写,所以我使用

db[count].sort(key=lambda a: a.data.lower)

然后我明白了

db[count].sort(key=lambda a: a.data.lower) TypeError:不可排序的类型:builtin_function_or_method()

有什么想法吗?

【问题讨论】:

  • 您需要从您的lambda致电 lower()
  • 对不起。我需要 db[count].sort(key=lambda a: a.data.lower())

标签: python sorting python-3.x lambda


【解决方案1】:

key 必须是一个可调用的,它返回一个要排序的值。在您的情况下,它返回另一个可调用的a.data.lower。您需要调用lower 才能获取值,所以正确的形式是:

db[count].sort(key=lambda a: a.data.lower())

【讨论】:

    【解决方案2】:

    您传递的是对 lower 方法的引用,而不是调用它。

    试试这个:

    db[count].sort(key=lambda a: a.data.lower())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      • 2021-01-25
      • 2015-12-06
      相关资源
      最近更新 更多