类型错误:' INT'对象不可调用

时间:2016-10-28 13:29:44

标签: python

在python中我得到了一个" TypeError:' int' obejct不可赎回"。我读过其他帖子,但我仍然无法弄清楚为什么会这样。

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

然后我得到了:" TypeError:' int'对象不可调用。"感谢任何建议和评论

1 个答案:

答案 0 :(得分:3)

您需要传递一个函数作为key sorted(以及sortmaxmin)的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)) 函数来提高效率。

string = 'RX 2735118 unicast packets 703555 multicast packets 677 broadcast packets 3439365 input packets 3803190483 bytes 1867301 jumbo packets 0 storm suppression bytes 0 runts 0 giants 0 CRC 0 no buffer 0 input error 0 short frame 0 overrun 0 underrun 0 ignored 0 watchdog 0 bad etype drop 0 bad proto drop 0 if down drop 0 input with dribble 291 input discard 15 Rx pause TX 3983205 unicast packets 1916649 multicast packets 340 broadcast packets 5900194 output packets 3546311266 bytes 1702539 jumbo packets 0 output errors 0 collision 0 deferred 0 late collision 0 lost carrier 0 no carrier 0 babble 0 output discard 0 Tx pause'