Sto provando a ripetere un dizionario che ho definito in un ordine specifico, ma itera sempre in un ordine diverso da quello che ho definito nel mio codice. Questo è solo un esempio di base di ciò che sto cercando di fare. Il dizionario su cui sto andando a scorrere è molto più grande, ha chiavi con un nome molto più complesso e non è in ordine alfabetico/numerico.Come eseguire iterazioni su un dizionario Python in ordine definito?
level_lookup = \
{
'PRIORITY_1' : { 'level' : 'BAD', 'value' : '' },
'PRIORITY_2' : { 'level' : 'BAD', 'value' : '' },
'PRIORITY_3' : { 'level' : 'BAD', 'value' : '' },
'PRIORITY_4' : { 'level' : 'BAD', 'value' : '' },
'PRIORITY_5' : { 'level' : 'CHECK', 'value' : '' },
'PRIORITY_6' : { 'level' : 'CHECK', 'value' : '' },
'PRIORITY_7' : { 'level' : 'GOOD', 'value' : '' },
'PRIORITY_8' : { 'level' : 'GOOD', 'value' : '' },
}
for priority in level_lookup:
if(level_lookup[ priority ][ 'value' ] == 'TRUE'):
set_levels += str(priority) + '\n'
Ho bisogno dell'ordine in cui definisco il dizionario da conservare durante l'iterazione. Il mio ordine non è alfabetico, quindi ordinare in ordine alfabetico non sarebbe di grande aiuto. C'è un modo per fare questo? Ho provato `level_lookup.items(), ma non mantiene il mio ordine.
Se si desidera utilizzare un normale dizionario in un ordine particolare. .. [non farlo] (http://blog.amir.rachum.com/post/54458435089/python-hash-id-and-dictionary-order). Usa invece un 'OrderedDict'. – KronoS
I dizionari non hanno un ordine.Cioè, gli oggetti devono venire fuori in un certo ordine quando si itera, ma è tutto ciò che è più semplice per Python, e potrebbe o non assomigliare all'ordine in cui sono stati inseriti gli oggetti, e potrebbe cambiare quando si aggiungono o si eliminano elementi. Se vuoi i tuoi articoli in un ordine, usa un contenitore che mantiene l'ordine dell'articolo, come ad esempio 'collections.OrderedDict'. – kindall