Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- Trabalhando com ordenação de listas em python
- Em JS é bem similar o funcionamento
- Wagner Cipriano. 07/10/2014. 13/10/2016
- No nosso problema temos estruturas de alto nivel em python. Lista com dicionários.
- E queremos ordenar a lista de acordo com uma chave do dicionário.
- Compatibilidade: py2 e py3. Ref: python3porting.com/preparing.html
- """
- from __future__ import print_function #Compatibilidade func print python 2/3
- from functools import cmp_to_key #Convert a cmp= function into a key= function. for python 3 sorted func
- def SortIdade(x, y):
- """
- Ordena pela chave 'idade' do dicionário, em ordem crescente
- Essa funcao poderia ter sido feita direto dentro do sort usando o lambda (declara uma funcao de uma linha)
- Como objetivo aqui é aprendizagem é melhor não usar
- Esse tipo de "programação funcional" deteriora a Manutenibilidade do sistema
- """
- if(x['idade'] < y['idade']): #item ja esta na posição correta
- return -1
- if(x['idade'] > y['idade']): #item esta na posição errada e sera trocado
- return 1
- return 0 #Chaves (idade) possuem o mesmo valor, não precisa trocar
- #
- #Monta a lista que sera usada para ordenacao
- Clientes = []
- Cliente = {'id':1, 'nome': 'Jose Maria', 'idade':70}; Clientes.append(Cliente);
- Cliente = {'id':4, 'nome': 'Joao Pedro', 'idade':18}; Clientes.append(Cliente);
- Cliente = {'id':3, 'nome': 'Felizberto', 'idade':11}; Clientes.append(Cliente)
- Cliente = {'id':2, 'nome': 'Ana Mariaa', 'idade':69}; Clientes.append(Cliente)
- #print ('\n\nbefore ordination:'); list( map(print, Clientes) );
- print ('\n\nbefore ordination:'); list(map(print, Clientes));
- #Sorting
- Clientes.sort(key=cmp_to_key(SortIdade))
- print ('\nafter ordination:'), list( map(print, Clientes) );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement