93 votes

Impression lisible d'un dict() python trié par clé

Je voudrais imprimer un dictionnaire python dans un fichier en utilisant PrettyPrinter (pour une meilleure lisibilité) mais faire en sorte que le dictionnaire soit trié par clé dans le fichier de sortie pour améliorer encore la lisibilité. Ainsi :

mydict = {'a':1, 'b':2, 'c':3}
pprint(mydict)

est actuellement imprimé sur

{'b':2,
 'c':3,
 'a':1}

Je voudrais faire un PrettyPrint du dictionnaire mais le trier par clé, par exemple.

{'a':1,
 'b':2,
 'c':3}

Quelle est la meilleure façon de procéder ?

6voto

chickenfish Points 21

J'ai eu le même problème que vous. J'ai utilisé une boucle for avec la fonction triée en passant le dictionnaire comme ceci :

for item in sorted(mydict):
    print(item)

4voto

Cat Plus Plus Points 53385

Vous pourriez transformer un peu cette dictée pour vous assurer que (comme les dicts ne sont pas gardés triés en interne), par ex.

pprint([(key, mydict[key]) for key in sorted(mydict.keys())])

0voto

Friedrich Points 1036

Un autre court oneliner :

mydict = {'c': 1, 'b': 2, 'a': 3}
print(*sorted(mydict.items()), sep='\n')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X