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 比较陌生,正在尝试向我没有编写的代码添加一些功能。
你设置:
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)