У вас есть хороший шанс научиться ценить передачу параметров ключевых слов из этого опыта.
Тони Вейжалайнен
1
Это очень старый, но есть ли у вас идеи, почему код ошибки вводит в заблуждение? Ваш ответ звучит так, как будто Python предоставляет lambdaдругой параметр, поскольку cmpфункция принимает 2?
SuperBiasedMan
@SuperBiasedMan ошибка не вводит в заблуждение. cmpФункция сравнения принимает два аргумента. Если вы не укажете, что передаете a key, из порядка параметров функции предполагается, что вы передаете компаратор. Ваша лямбда принимает один параметр, поэтому не является допустимым компаратором, и именно об этом говорит ошибка.
[(«яблоко», «303», «30»), («ребенок», «343», «34»), («конфеты», «999», «9»)]. Который не отсортирован по базе на 2 элемента тоже!
Даниэль Куа
8
В списках Python есть два встроенных способа сортировки данных:
sort()— A method that modifies the list in-place
sorted()— A built-in function that builds a new sorted list from an iterable
Исходя из ваших требований, вы можете выбрать один из этих двух:
если вы хотите сохранить оригинальный список, вы можете использовать сортированную функцию или, если вам не нужен оригинальный список, вы можете использовать функцию сортировки.
Прежде чем приступить к сортировке или сортировке, нам нужно понять лямбду.
Лямбда - это анонимная функция, а анонимная функция - это функция, которая определена без имени, этот пост, кажется, объясняет это довольно хорошо.
Лямбда-функции удобны для вызова in-line, потому что они имеют только одно выражение, которое вычисляется и возвращается. У них синтаксис для лямбды такой:
лямбда аргументы: выражение
давайте посмотрим, как использовать отсортированную функцию:
Ответы:
использование
На Python 2.x
sorted
функция принимает аргументы в следующем порядке:так что без
key=
функции, которую вы передаете, будет считатьсяcmp
функция, которая принимает 2 аргумента.источник
lambda
другой параметр, посколькуcmp
функция принимает 2?cmp
Функция сравнения принимает два аргумента. Если вы не укажете, что передаете akey
, из порядка параметров функции предполагается, что вы передаете компаратор. Ваша лямбда принимает один параметр, поэтому не является допустимым компаратором, и именно об этом говорит ошибка.Будет напечатано следующее:
источник
В списках Python есть два встроенных способа сортировки данных:
Исходя из ваших требований, вы можете выбрать один из этих двух:
если вы хотите сохранить оригинальный список, вы можете использовать сортированную функцию или, если вам не нужен оригинальный список, вы можете использовать функцию сортировки.
Прежде чем приступить к сортировке или сортировке, нам нужно понять лямбду.
Лямбда - это анонимная функция, а анонимная функция - это функция, которая определена без имени, этот пост, кажется, объясняет это довольно хорошо.
https://www.programiz.com/python-programming/anonymous-function
Лямбда-функции удобны для вызова in-line, потому что они имеют только одно выражение, которое вычисляется и возвращается. У них синтаксис для лямбды такой:
лямбда аргументы: выражение
давайте посмотрим, как использовать отсортированную функцию:
вывод: [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
Здесь мы видим, что список student_tuples с кортежами отсортирован на основе ключевого параметра при условии, что student [2].
источник