Официальная документация Python 3 объясняет в этом разделе правильный способ преобразования этого из Python 2 в 3.
Оригинальная cmp
функция просто делает что-то вроде
def cmp(x, y):
if x == y:
return 0
elif x > y:
return 1
else:
return -1
То есть он эквивалентен sign(x-y)
, но также поддерживает строки и другие типы данных.
Однако ваша проблема в том, что текущая функция sort
работает не с функцией сравнения с двумя аргументами, а с единственной key
функцией с одним аргументом. Python предоставляет functools.cmp_to_key
, чтобы помочь вам преобразовать его, поэтому сделайте что-то вроде
test.sort(key = functools.cmp_to_key(
lambda x, y: cmp(x[2],y[2]) or cmp(x[4], y[4]) or cmp(y[9], x[9])
))