Comment effectuer une itération sur un Python dictionnaire dans l'ordre défini?

Je suis en train de parcourir un dictionnaire que j'ai défini dans un ordre spécifique, mais il a toujours itère dans un ordre différent que ce que j'ai définie dans mon code. C'est juste un exemple de base de ce que je suis en train de faire. Le dictionnaire, je suis à parcourir est beaucoup plus grande, beaucoup plus complexe, nommé clés, et n'est pas dans l'ordre alphabétique/numérique.

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'

J'ai besoin l'ordre que je définir le dictionnaire pour être conservé au cours d'une itération. Ma commande n'est pas alphabétique, tri par ordre alphabétique n'est pas vraiment utile. Est-il possible de faire cela? J'ai essayé " level_lookup.les éléments(), mais cela ne veut pas maintenir ma commande.

Si vous souhaitez utiliser un dictionnaire dans l'ordre... ne pas. Utiliser un OrderedDict à la place.
Les dictionnaires n'ont pas un ordre. Qui est, les éléments sont à venir dans quelques commande lorsque vous réitérer, mais c'est tout ce qui est plus facile pour Python, et peut ou peut ne pas ressembler à l'ordre dans lequel les éléments ont été mis en, et peut changer lorsque vous ajoutez ou supprimer des éléments. Si vous voulez que vos articles dans une commande, utilisez un récipient qui conserve l'ordre des éléments, tels que collections.OrderedDict.

OriginalL'auteur PseudoPsyche | 2013-07-16

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *