排序列表:int 对象不可调用

Ren*_*ier 0 python sorting list

我有一个漫长而复杂的方法,我将给出重要的部分:

def get_itter(self, sort_by=0): #sort_by is set to 0 for debugging purposes

    ...

    r = self.parser(self.in_file) # parse a csv file

    ...

    if type(sort_by) == int:
        r = [i for i in r]
        sort = sorted(r, key=sort_by)
    ...
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,当我运行此代码时,它给了我一个错误:TypeError: 'int' object is not callable. 为什么给我这个错误?

PS 我对 Python 比较陌生,正在尝试向我没有编写的代码添加一些功能。

jon*_*rpe 5

你设置:

sort_by=0
Run Code Online (Sandbox Code Playgroud)

检查它是一个int

if type(sort_by) == int: # note: isinstance(sort_by, int) is preferred here
Run Code Online (Sandbox Code Playgroud)

然后使用它:

sorted(r, key=sort_by)
Run Code Online (Sandbox Code Playgroud)

当您传递 a keyto 时sorted,它会尝试将该键应用于它正在排序的序列中的所有项目,并尝试使用每个项目调用它,例如:

sortvalues = [key(i) for i in seq]
Run Code Online (Sandbox Code Playgroud)

如果key是整数,则不能调用它:

0(1)
Run Code Online (Sandbox Code Playgroud)

给出TypeError你所看到的。

目前尚不清楚您要做什么,但如果您想按sort_by序列中的第 th 项排序,您可以使用operator.itemgetter

from operator import itemgetter
sorted(r, key=itemgetter(sort_by))
Run Code Online (Sandbox Code Playgroud)