使用groupby时,'int'对象不可调用

时间:2016-09-28 16:49:59

标签: python

我正在尝试使用以下代码找到列表中最长的数字序列

from itertools import groupby
ggg = groupby([1,2,3,3,3,5,88,9,9,9,9,9,9,9,1,1,1,2,2,3,3,3,3,3])
max(ggg, key=lambda k: len(list(k[1])))

但是,我得到错误'int'对象不可调用。另外,我使用的是python 3.

2 个答案:

答案 0 :(得分:0)

代码对我来说很好:

>>> from itertools import groupby
>>> ggg = groupby([1,2,3,3,3,5,88,9,9,9,9,9,9,9,1,1,1,2,2,3,3,3,3,3])
>>> max(ggg, key=lambda k: len(list(k[1])))
(9, <itertools._grouper object at 0x019973F0>)

正如@FamousJameous所提到的那样,您正在使用的其中一个函数已被分配给一个整数。这是一个很好的说明,为什么你应该小心选择你选择的变量名称,因为它们可以擦除现有的功能。考虑:

>>> x = [1,2,3]
>>> len = len(x)
>>> len(x)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable

答案 1 :(得分:0)

您的代码适用于Python 3.我最好的猜测是,您的问题来自于将lenlistmax指定为int。例如:

>>> list_a = [1, 2]
>>> len(list_a)
2
>>> len = 4
>>> len(list_a)
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    len(list_a)
TypeError: 'int' object is not callable