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 p> 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". P> est un moyen de le faire sans exécuter les fichiers de processus code> deux fois, une fois pour "H" et "N", une autre pour "A"? P> P>
3 Réponses :
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))
É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
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. P>
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 code>. Aussi simple que:
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.