Mais
Como posso ordenar um dicionário por chave?
Qual seria uma boa maneira de passar de {2:3, 1:89, 4:5, 3:0}
para {1:89, 2:3, 3:0, 4:5}
?
Eu verifiquei alguns posts mas todos eles usam o "sorted" operador que devolve tuples.
829
3
Os dicionários Python padrão são desordenados. Mesmo se você classificasse os pares (chave, valor), você não seria capaz de armazená-los em um "dicionário" de uma forma que preservaria a ordenação.
A maneira mais fácil é utilizar
OrderedDict
, que se lembra da ordem em que os elementos foram inseridos:Não importa a forma como o
od
é impresso; vai funcionar como esperado:Python 3
Para usuários do Python 3, é necessário utilizar o
.items()
em vez de.iteritems()
:Os próprios dicionários não têm itens encomendados como tal, se você quiser imprimi-los etc para alguma encomenda, aqui estão alguns exemplos:
Em Python 2.4 e superior:
dá:
(Python abaixo de 2.4:)
Fonte: http://www.saltycrane.com/blog/2007/09/how-to-sort-python-dictionary-by-keys/[2]
Como outros já mencionaram, os dicionários são intrinsecamente desordenados. Entretanto, se a questão for apenas **dicionários em exibição*** de forma ordenada, você pode substituir o método
__str__
em uma subclasse de dicionário, e utilizar esta classe de dicionário em vez de construir odicto'. Por exemplo, o método
str'.Note que isto não muda nada sobre como as chaves são armazenadas, a ordem em que voltarão quando você iterar sobre elas etc, apenas como elas são exibidas com
impressão
ou no console python.