Bom galera, vai uma dica legal sobre
Python. Como ordenar dicionários. Quem já tentou ordenar algum dicionário em Python percebeu que ele simplesmente não mantém a ordem com que os dados são inseridos, ou seja, se eu fizer isto:
##DIC 1 E O DICIONÁRIO QUE SERÁ ORDENADO
dic_1 = {'a':1,'b':3,'c':2}
##DICIONÁRIO AUXILIAR
dic_aux = dic_1
##ORDENANDO DIC_1 PELOS VALORES
dic_1 = sorted(dic_1.values())
##PEGA VALORES DO DIC_1 E VAI MONTANDO DIC_RESULTADO A PARTIR DO MENOR VALOR
dic_resultado = {}
for i in dic_1:
for item in dic_aux:
if item[i] == i
dic_resultado[item] = i
print dic_resultado
O dicionário resultado teria ordem aleatória, ou seja, qualquer ordem, menos a que nos queremos (ordem de inserção). Bom, se o Python não tivesse o mal costume não manter a ordem no dicionário, conforme os itens são adicionados, isto resolveria o nosso problema. Mas como ele não mantém a ordem, precisaremos de uma classe auxiliar que faça este trabalho. A classe se chama "ordict.py", está disponível
neste link.
Coloque o arquivo no mesmo diretório que o seu arquivo Python e faça a importação da classe desta maneira no começo do seu script:
from odict import *
Pronto, agora seu script enxerga todos os métodos implementados em "odict.py". Agora vamos usá-lo. Basicamente o script de ordenação será o mesmo, com a diferença que o vetor resultado em vez de ser um dicionário será uma instância (objeto) da classe "OrdeneDict", ficando assim o resultado final:
from odict import *
##DIC 1 E O DICIONÁRIO QUE SERA ORDENADO
dic_1 = {'a':1,'b':3,'c':2}
##DICIONARIO AUXILIAR
dic_aux = dic_1
##ORDENANDO DIC_1 PELOS VALORES
dic_1 = sorted(dic_1.values())
##PEGA VALORES DO DIC_1 E VAI MONTANDO DIC_RESULTADO A PARTIR DO MENOR VALOR
dic_resultado = OrderedDict()
for i in dic_1:
for item in dic_aux:
if item[i] == i:
dic_resultado[item] = i
print dic_resultado
Bom, é isso aí por enquanto, espero que seja útil.
Abraço e até a próxima.
sim allisonvoll, so que eu quero como resposta um dicionario ordenado, não uma lista, se fosse pra obter uma lista a 1 implementação usada como exemplo resolveria o caso não acha??
abraço