Como classificar quase qualquer tipo de lista em Python
Classificar uma lista em Python permite que você organize seus itens em ordem crescente ou decrescente.
Em vez de escrever longos blocos de código para fazer isso, o Python possui um método integrado que permite classificar os itens em qualquer lista ou array. Explicaremos como fazer isso neste post.
Como classificar uma lista em Python
Você pode classificar os itens em uma lista ou array usando o método Python sort () .
O método sort () em Python aceita dois argumentos opcionais e a sintaxe é semelhante a esta:
list.sort(key = function, reverse = True/False)
Por padrão, o método sort () organiza os itens de uma lista em ordem crescente:
myList = ["C", "D", "B", "A", "F"]
myList.sort()
print(myList)
Output: ['A', 'B', 'C', 'D', 'F']
Você pode usar o argumento reverso para visualizar a lista em ordem decrescente:
myList = ["C", "D", "B", "A", "F"]
myList.sort(reverse = True)
print(myList)
Output: ['F', 'D', 'C', 'B', 'A']
Você também pode organizar os itens em uma lista pelo comprimento de cada string.
Para fazer isso, crie uma função e passe-a para o método sort () usando o argumento chave opcional:
myList = ["MUO", "Python", "JavaScript", "Sort", "Sortlists"]
def sortLength(item):
return len(item)
myList.sort(reverse = True, key = sortLength)
print(myList)
Output: ['JavaScript', 'Sortlists', 'Python', 'Sort', 'MUO']
Como classificar uma lista de dicionários em Python
Você também pode usar o método sort () para classificar uma lista de dicionários.
Vamos classificar as tarefas no dicionário abaixo por tempo:
myArray = [
{"Task": "Wash", "Time": 12.00},
{"Task":"Football", "Time": 24.00},
{"Task":"Sort", "Time": 17.00},
{"Task":"Code", "Time": 15.00}
]
def sortByTime(item):
return item["Time"]
myArray.sort(key = sortByTime)
print(myArray)
Como os valores de tempo são inteiros, o bloco de código acima reorganiza a matriz com base no tempo da tarefa.
Além de classificar a matriz acima por tempo, você também pode organizá-la em ordem alfabética usando as tarefas, que são strings.
Para classificar por string na matriz de exemplo, você só precisa alterar Tempo no colchete para Tarefa :
myArray = [
{"Task": "Wash", "Time": 12.00},
{"Task":"Football", "Time": 24.00},
{"Task":"Sort", "Time": 17.00},
{"Task":"Code", "Time": 15.00}
]
def sortByTime(item):
return item["Task"]
myArray.sort(key = sortByTime)
print(myArray)
Você também pode classificar as tarefas na ordem inversa, definindo reverse para true:
myArray.sort(key = sortByTime, reverse = True)
Você também pode usar uma função lambda com sort () para um código mais limpo:
myArray.sort(key = lambda getTime: getTime["Time"])
print(myArray)
Como classificar uma lista Python aninhada
Você pode classificar uma lista aninhada de tuplas pelo índice de cada elemento aninhado nessa lista.
Por exemplo, o código a seguir usa o terceiro item em cada tupla para classificar a lista em ordem crescente:
Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
def sortByThirdIndex(a):
return a[2]
Alist.sort(key = sortByThirdIndex)
print(Alist)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
Na saída acima, o terceiro item em cada tupla aumenta de zero para vinte consecutivamente.
Observe que isso não funciona com um conjunto Python, pois você não pode indexá-lo. Além disso, cada ninho na lista deve pertencer ao mesmo tipo de dados.
No entanto, para organizar a saída em ordem decrescente:
Alist.sort(key = getIndex, reverse = True)
print(Alist)
Output: [(3, 19, 20), (1, 8, 15), (10, 19, 4), (7, 9, 3), (2, 6, 0)]
Vamos ver como isso se parece com uma função lambda também:
Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
newList = sorted(Alist, key = lambda a: a[2])
print(newList)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
Como classificar uma lista usando o método Sorted ()
Alternativamente, você pode usar o método Sorted () .
Embora funcione de forma semelhante ao método sort () , ele cria uma nova lista classificada sem modificar a original. Seu layout de sintaxe também é um pouco diferente.
A sintaxe do método Sorted () geralmente se parece com esta:
sorted(list, key = function, reverse = True/False)
Portanto, para classificar uma lista usando o método Sort () , você precisa criar uma nova variável para a lista classificada:
Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
def getIndex(a):
return a[2]
newList = sorted(Alist, key = getIndex)
print(newList)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
O método Sorted () também aceita uma função lambda como sua chave:
Alist = [(3, 19, 20), (2, 6, 0), (1, 8, 15), (7, 9, 3), (10, 19, 4)]
newList = sorted(Alist, key = lambda a: a[2])
print(newList)
Output: [(2, 6, 0), (7, 9, 3), (10, 19, 4), (1, 8, 15), (3, 19, 20)]
Onde você pode aplicar a classificação por lista?
Uma compreensão sólida do método de classificação Python é necessária para uma programação eficiente. Ele permite que você controle como uma lista ou array surge, e você sempre pode aplicá-lo em projetos da vida real. Por exemplo, classificar uma lista Python pode ser útil ao reorganizar dados de uma API ou banco de dados, portanto, faz mais sentido para o usuário final.