12 de setembro de 2011

Ordenando uma lista por mais de um campo

A ordenação de listas em Python tem muito poder quando você tem uma lista de tuplas.

Para ordenar uma lista de tuplas, a função sorted() classifica o primeiro item da tupla, depois o segundo, e assim por diante.

Vamos a um exemplo: tenho uma lista de pessoas com nome, idade e salário. Quero classificá-la por idade (primeiro os mais jovens), salário (primeiro os que ganham mais) e por último, os nomes em ordem alfabética.

>>> pessoas = [('Vicente', 49, 1500), ('Felipe', 49, 2500), ('Roberta', 41, 2500), ('Ana', 41, 2500)]
>>> def ordena(t):
...   return (t[1], t[2] *-1, t[0])
>>> sorted(pessoas, key=ordena)

Viu só? Simples assim.

Eu sou Vinicius Assef, um programador do século passado que gosta de Python, pratica Lean Development e acredita em Deus. Você pode me contactar por email ou twitter.

Nenhum comentário:

Postar um comentário

Marcadores