Você tem uma boa chance de aprender a apreciar a passagem de parâmetros de palavras-chave dessa experiência.
Tony Veijalainen 22/09/10
1
Isso é muito antigo, mas você tem alguma idéia de por que o código de erro é enganoso? Sua resposta parece possível O Python está fornecendo lambdaoutro parâmetro, já que uma cmpfunção leva 2?
SuperBiatedMan
@SuperBiatedMan, o erro não é enganoso. cmp, uma função comparadora usa dois argumentos. Se você não especificar que está passando a key, assume-se da ordem dos parâmetros de função que está passando um comparador. Seu lambda usa um parâmetro, portanto, não é um comparador válido e é isso que o erro diz.
Respostas:
Usar
No Python 2.x, a
sorted
função recebe seus argumentos nesta ordem:portanto, sem o
key=
, a função que você passar será considerada umacmp
função que recebe 2 argumentos.fonte
lambda
outro parâmetro, já que umacmp
função leva 2?cmp
, uma função comparadora usa dois argumentos. Se você não especificar que está passando akey
, assume-se da ordem dos parâmetros de função que está passando um comparador. Seu lambda usa um parâmetro, portanto, não é um comparador válido e é isso que o erro diz.Ele será impresso da seguinte maneira:
fonte
As listas Python têm duas maneiras internas de classificar dados:
Com base nos seus requisitos, você pode escolher entre estes dois:
se você deseja manter a lista original, pode usar a função classificada ou, se não precisar da lista original, pode usar a função classificação.
Antes de prosseguir ou ordenar, precisamos entender lambda.
Um lambda é uma função anônima e uma função anônima é uma função definida sem nome, este post parece explicar muito bem.
https://www.programiz.com/python-programming/anonymous-function
As funções do Lambda são boas para chamar in-line, porque elas possuem apenas uma expressão que é avaliada e retornada. A sintaxe para uma lambda é:
argumentos lambda: expressão
vamos ver como usar a função classificada:
saída: [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
Aqui podemos ver a lista student_tuples com tuplas é classificada com base no parâmetro-chave, desde que seja aluno [2].
fonte