【问题标题】:TypeError:'int' object is not callableTypeError:'int' 对象不可调用
【发布时间】:2016-10-28 21:49:44
【问题描述】:

在 python 中,我得到一个“TypeError: 'int' obejct is not callable”。我已经阅读了其他帖子,但我仍然无法弄清楚为什么会这样。

def sort_last(tuples):
    sorted_tuples = [sorted(tuples,key=tuple[-1]) for tuple in tuples]
return sorted_tuples

然后我得到:“TypeError: 'int' object is not callable.”感谢任何建议和评论

【问题讨论】:

  • 感谢您展示一些代码,但您能否展示一下您是如何实例化tuples 对象的?提供一些示例数据。
  • 缩进代码的第三行。
  • 如果此代码中出现错误,那么您一定是不小心将sorted 重新分配给了一个整数。将您的变量 sorted 更改为 _sorted 之类的东西,您应该会很好。
  • tuple[-1] 不是函数。
  • 改为使用key=lambda x: x[-1] 并缩进return

标签: python


【解决方案1】:

您需要将函数作为sorted(以及sortmaxmin)的key 参数传递。

这是您的代码的修复版本,使用 lambda 函数。

def sort_last(tuples):
    sorted_tuples = [sorted(tuples,key=lambda t: t[-1]) for tuple in tuples]
    return sorted_tuples

但是,该代码有点……奇怪。如果您的目标是按每个元组中的最后一项对元组列表进行排序,您可以简单地这样做:

def sort_last(tuples):
    return sorted(tuples, key=lambda t: t[-1])

a = [(1,2,10), (5,6,8), (3,4,9)]
print(sort_last(a))

输出

[(5, 6, 8), (3, 4, 9), (1, 2, 10)]

虽然这行得通,但我们可以通过使用itemgetter 函数来提高效率。

from operator import itemgetter

def sort_last(tuples):
    return sorted(tuples, key=itemgetter(-1))

【讨论】:

    猜你喜欢
    • 2012-04-03
    • 2013-04-03
    • 2017-12-20
    • 2023-03-03
    • 2013-07-19
    相关资源
    最近更新 更多