在python中我得到了一个" TypeError:' int' obejct不可赎回"。我读过其他帖子,但我仍然无法弄清楚为什么会这样。
def sort_last(tuples):
sorted_tuples = [sorted(tuples,key=tuple[-1]) for tuple in tuples]
return sorted_tuples
然后我得到了:" TypeError:' int'对象不可调用。"感谢任何建议和评论
答案 0 :(得分:3)
您需要传递一个函数作为key
sorted
(以及sort
,max
和min
)的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'