Jolie imprimer un dictionnaire en Python

Rayven Esplanada 10 octobre 2023
  1. Utilisez pprint() pour imprimer un dictionnaire en Python
  2. Utilisez json.dumps() pour imprimer un dictionnaire en Python
  3. Utilisez yaml.dump() pour imprimer un joli dictionnaire en Python
Jolie imprimer un dictionnaire en Python

Ce tutoriel présente la façon d’imprimer un dictionnaire en Python. Jolie impression signifie présenter quelque chose dans un format ou un style plus lisible.

Utilisez pprint() pour imprimer un dictionnaire en Python

pprint est un module Python qui permet d’imprimer des types de données Python pour les rendre plus lisibles. Ce module permet également d’imprimer un dictionnaire.

Dans le module pprint il y a une fonction du même nom pprint(), qui est la fonction utilisée pour imprimer la chaîne ou l’objet donné.

D’abord, déclarer un tableau de dictionnaires. Ensuite, il faut l’imprimer en utilisant la fonction pprint.pprint().

import pprint

dct_arr = [
    {"Name": "John", "Age": "23", "Country": "USA"},
    {"Name": "Jose", "Age": "44", "Country": "Spain"},
    {"Name": "Anne", "Age": "29", "Country": "UK"},
    {"Name": "Lee", "Age": "35", "Country": "Japan"},
]

pprint.pprint(dct_arr)

Production :

[{'Age': '23', 'Country': 'USA', 'Name': 'John'},
 {'Age': '44', 'Country': 'Spain', 'Name': 'Jose'},
 {'Age': '29', 'Country': 'UK', 'Name': 'Anne'},
 {'Age': '35', 'Country': 'Japan', 'Name': 'Lee'}]

Pour comparer, voici la sortie d’une déclaration print() normale :

[
    {"Name": "John", "Age": "23", "Country": "USA"},
    {"Name": "Jose", "Age": "44", "Country": "Spain"},
    {"Name": "Anne", "Age": "29", "Country": "UK"},
    {"Name": "Lee", "Age": "35", "Country": "Japan"},
]

La sortie de pprint() est nettement plus lisible. Elle casse chaque élément du dictionnaire dans le tableau juste après les virgules tout en triant les valeurs du dictionnaire par clé.

Si vous ne voulez pas que vos paires clé-valeur soient triées par clé, alors pprint() n’est pas la fonction à utiliser car son mécanisme de tri est intégré dans la fonction.

Une autre chose à noter est que pprint() n’imprimera pas très bien les objets imbriqués, y compris les dictionnaires imbriqués. Donc si vous vous attendez à ce que vos valeurs soient imbriquées, alors ce n’est pas la solution pour cela non plus.

Utilisez json.dumps() pour imprimer un dictionnaire en Python

Dans le module Python json, il y a une fonction appelée dumps(), qui convertit un objet Python en une chaîne JSON. En plus de la conversion, elle formate également le dictionnaire en un joli format JSON, ce qui peut être un moyen viable d’imprimer un joli dictionnaire en le convertissant d’abord en JSON.

La fonction dumps() accepte 3 paramètres utilisés pour l’impression jolie : l’objet pour la conversion, une valeur booléenne sort_keys, qui détermine si les entrées doivent être triées par clé, et indent, qui spécifie le nombre d’espaces pour l’indentation.

Nous utiliserons le même exemple de dictionnaire que ci-dessus pour cette solution. sort_keys est mis à False pour désactiver le tri, et indent est mis à 4 espaces.

import json

dct_arr = [
    {"Name": "John", "Age": "23", "Country": "USA"},
    {"Name": "Jose", "Age": "44", "Country": "Spain"},
    {"Name": "Anne", "Age": "29", "Country": "UK"},
    {"Name": "Lee", "Age": "35", "Country": "Japan"},
]

print(json.dumps(dct_arr, sort_keys=False, indent=4))

Production :

[
    {
        "Age": "23",
        "Country": "USA",
        "Name": "John"
    },
    {
        "Age": "44",
        "Country": "Spain",
        "Name": "Jose"
    },
    {
        "Age": "29",
        "Country": "UK",
        "Name": "Anne"
    },
    {
        "Age": "35",
        "Country": "Japan",
        "Name": "Lee"
    }
]

Comparé à la sortie de la fonction pprint(), c’est beaucoup plus lisible, bien que cela coûte plus de lignes puisque c’est dans un joli format JSON.

Que faire si les valeurs données ont un dictionnaire imbriqué à l’intérieur ? Editons un peu l’exemple et regardons la sortie.

import json

dct_arr = [
    {"Name": "John", "Age": "23", "Residence": {"Country": "USA", "City": "New York"}},
    {"Name": "Jose", "Age": "44", "Residence": {"Country": "Spain", "City": "Madrid"}},
    {"Name": "Anne", "Age": "29", "Residence": {"Country": "UK", "City": "England"}},
    {"Name": "Lee", "Age": "35", "Residence": {"Country": "Japan", "City": "Osaka"}},
]

print(json.dumps(dct_arr, sort_keys=False, indent=4))

Production :

[
    {
        "Name": "John",
        "Age": "23",
        "Residence": {
            "Country": "USA",
            "City": "New York"
        }
    },
    {
        "Name": "Jose",
        "Age": "44",
        "Residence": {
            "Country": "Spain",
            "City": "Madrid"
        }
    },
    {
        "Name": "Anne",
        "Age": "29",
        "Residence": {
            "Country": "UK",
            "City": "England"
        }
    },
    {
        "Name": "Lee",
        "Age": "35",
        "Residence": {
            "Country": "Japan",
            "City": "Osaka"
        }
    }
]

Evidemment, les jolis dictionnaires imbriqués JSON sont pris en charge par json.dump(), et visuellement cela semble propre et très lisible même si c’est imbriqué.

Utilisez yaml.dump() pour imprimer un joli dictionnaire en Python

Une autre façon d’imprimer joliment un dictionnaire est d’utiliser la fonction dump() du module yaml. Elle sert le même objectif que la fonction json.dumps() mais au format YAML au lieu de JSON.

Tout d’abord, installez le module YAML en utilisant pip :

pip install pyyaml

ou si vous utilisez Python 3 et pip3 :

pip3 install pyyaml

Essayons avec le même exemple imbriqué utilisé dans l’exemple JSON.

Prenez note du nouveau paramètre default_flow_style, qui détermine si le style de sortie du dump doit être inline ou block. Dans ce cas, la sortie doit être de type bloc car nous voulons qu’elle soit lisible, donc mettez ce paramètre à False.

import yaml

dct_arr = [
    {"Name": "John", "Age": "23", "Residence": {"Country": "USA", "City": "New York"}},
    {"Name": "Jose", "Age": "44", "Residence": {"Country": "Spain", "City": "Madrid"}},
    {"Name": "Anne", "Age": "29", "Residence": {"Country": "UK", "City": "England"}},
    {"Name": "Lee", "Age": "35", "Residence": {"Country": "Japan", "City": "Osaka"}},
]

print(yaml.dump(dct_arr, sort_keys=False, default_flow_style=False))

Production :

- Name: John
  Age: '23'
  Residence:
    Country: USA
    City: New York
- Name: Jose
  Age: '44'
  Residence:
    Country: Spain
    City: Madrid
- Name: Anne
  Age: '29'
  Residence:
    Country: UK
    City: England
- Name: Lee
  Age: '35'
  Residence:
    Country: Japan
    City: Osaka

En résumé, il est subjectif de savoir si la fonction YAML dump() est plus lisible que la fonction JSON dumps(). Cela dépend de la préférence personnelle ou du type de sortie requis. Les deux fonctions battent la sortie de pprint lorsqu’il s’agit de structures de données plus complexes ou d’objets imbriqués.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Article connexe - Python Dictionary

Article connexe - Python Print