11
votes

Itérer à travers un dictionnaire dans l'ordre inverse (Python)

Je comprends que lors de l'itération à travers un dictionnaire, il sera en ordre arbitraire. Cependant, je dois m'assurer qu'un élément particulier est accessible en dernier et cet élément a lieu la plus petite clé. Comment dois-je implémenter ceci?

En ce moment, j'ai xxx

Le dictionnaire se trouve être itéré dans l'ordre "A", "H", "N". J'ai besoin de traiter "A" en dernier parce que cela dépend des fichiers de "H" et "N".

est un moyen de le faire sans exécuter les fichiers de processus deux fois, une fois pour "H" et "N", une autre pour "A"?


1 commentaires

Des moyens arbitraires "en dehors de votre contrôle". Vous ne pouvez pas faire que le dictionnaire vous donne tout d'abord ou dernier ou contrôler l'ordre de votre commande. Si vous voulez que l'un dernier, triez les éléments, puis itérer sur la liste triée.


3 Réponses :


8
votes

Trier juste la liste avant d'itération sur eux.

files = {"d":2, "g":1, "a":3, "b":3, "t":2}
print(files.items())
for key, file_dir in sorted(list(files.items()), key=lambda x:x[0].lower(), reverse=True):
    print ("Checking {0} in {1}".format(key, file_dir))


3 commentaires

Étrange. Quand j'utilise cela, je reçois la commande "H", "A", "N".


En effet. Bizarre .... Je viens de le courir et j'ai eu Nha. Je l'ai retourné avec l'exemple ci-dessus et ça marche ... Je ne sais pas quoi vous dire. = (


Je crois que Python 3 utilise l'ordre dans lequel des éléments ont été insérés dans un dictionnaire que l'ordre d'itération de ce dictionnaire



2
votes

Des moyens arbitraires "en dehors de votre contrôle". Vous ne pouvez pas faire que le dictionnaire vous donne tout d'abord ou dernier ou contrôler l'ordre de votre commande. Si vous voulez que l'un dernier, triez les éléments, puis itérer sur la liste triée. Ou, si cet élément est unique et que vous souhaitez le gérer différemment, faites-le sortir de celui du dictionnaire et de la gérer séparément à la fin.


0 commentaires

1
votes

Je ne peux pas dire si le code que vous donnez est pseudo-code ou non, mais si c'est le code réel une clé que vous souhaitez réellement être le dernier est A . Aussi simple que: xxx


0 commentaires