Advertisement
wagner-cipriano

Trabalhando com ordenação de listas com dicionario em python

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