Список сортировки списка с настраиваемой функцией сравнения в Python

Я знаю, что есть несколько вопросов с такими названиями, но, похоже, я не могу найти ответы на них, чтобы работать.

У меня есть список списков, 50 раз по 5 элементов. Теперь я хочу отсортировать этот список, применив настраиваемую функцию сравнения к каждому элементу. Эта функция вычисляет соответствие списка, по которому должны быть отсортированы элементы. Я создал две функции, сравнение и соответствие:

def compare(item1, item2):
    return (fitness(item1) < fitness(item2))

и

def fitness(item):
    return item[0]+item[1]+item[2]+item[3]+item[4]

Затем я попытался вызвать их по:

sorted(mylist, cmp=compare)

или

sorted(mylist, key=fitness)

, или

sorted(mylist, cmp=compare, key=fitness)

или

sorted(mylist, cmp=lambda x,y: compare(x,y))

. Также я попробовал list.sort () с тем же параметры. Но в любом случае функции получают в качестве аргумента не список, а None . Я понятия не имею, почему это происходит в основном из C ++, это противоречит моей идее о функции обратного вызова. Как я могу отсортировать эти списки с помощью пользовательской функции?

Изменить t получить список в качестве аргумента, но None . Я понятия не имею, почему это происходит в основном из C ++, это противоречит моей идее о функции обратного вызова. Как я могу отсортировать эти списки с помощью пользовательской функции?

Изменить t получить список в качестве аргумента, но None . Я понятия не имею, почему это происходит в основном из C ++, это противоречит любому представлению о функции обратного вызова для меня. Как я могу отсортировать эти списки с помощью пользовательской функции?

Изменить Я нашел свою ошибку. В цепочке, которая создает исходный список, одна функция ничего не вернула, но было использовано возвращаемое значение. Извините за беспокойство

52
задан DaClown 6 March 2011 в 22:45
поделиться