Altro
Come posso ordinare un dizionario per chiave?
Quale sarebbe un bel modo per passare da {2:3, 1:89, 4:5, 3:0}
a {1:89, 2:3, 3:0, 4:5}
?
Ho controllato alcuni post ma tutti usano l'operatore "sorted" che restituisce tuple.
829
3
I dizionari standard di Python non sono ordinati. Anche se si ordinassero le coppie (chiave, valore), non si sarebbe in grado di memorizzarle in un
dict
in modo da preservare l'ordinamento.Il modo più semplice è usare
OrderedDict
, che ricorda l'ordine in cui gli elementi sono stati inseriti:Non preoccupatevi del modo in cui viene stampato
od
; funzionerà come previsto:Python 3
Per gli utenti Python 3, si deve usare
.items()
invece di.iteritems()
:I dizionari stessi non hanno elementi ordinati in quanto tali, se volete stamparli ecc. con un certo ordine, ecco alcuni esempi:
In Python 2.4 e superiori:
dà:
(Python inferiore a 2.4:)
Fonte: http://www.saltycrane.com/blog/2007/09/how-to-sort-python-dictionary-by-keys/
Come altri hanno menzionato, i dizionari sono intrinsecamente non ordinati. Tuttavia, se il problema è semplicemente quello di visualizzare i dizionari in modo ordinato, puoi sovrascrivere il metodo
__str__
in una sottoclasse di dizionario e usare questa classe di dizionari piuttosto che ildict
costruito. Per esempio.Nota, questo non cambia nulla su come le chiavi sono memorizzate, l'ordine in cui tornano quando si itera su di esse, ecc, solo come vengono visualizzate con
print
o nella console di python.