Pretty Print eines Dictionaries in Python

Rayven Esplanada 10 Oktober 2023
  1. Verwenden Sie pprint(), um ein Dictionary in Python hübsch auszudrucken
  2. Verwendung von json.dumps() zum Pretty-Printing eines Dictionaries in Python
  3. Verwenden Sie yaml.dump(), um ein Dictionary in Python hübsch auszudrucken
Pretty Print eines Dictionaries in Python

In diesem Tutorial wird gezeigt, wie man ein Dictionary in Python hübsch ausdrucken kann. Pretty print bedeutet, etwas in einem besser lesbaren Format oder Stil darzustellen.

Verwenden Sie pprint(), um ein Dictionary in Python hübsch auszudrucken

Das Modul pprint ist ein Python-Modul, das die Möglichkeit bietet, Python-Datentypen hübsch auszudrucken, damit sie besser lesbar sind. Dieses Modul unterstützt auch das Pretty-Printing von Dictionaries.

Innerhalb des Moduls pprint gibt es eine gleichnamige Funktion pprint(), mit der die angegebene Zeichenkette oder das angegebene Objekt hübsch ausgedruckt wird.

Deklarieren Sie zunächst ein Array von Dictionaries. Anschließend wird es mit der Funktion pprint.pprint() hübsch ausgedruckt.

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)

Ausgabe:

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

Zum Vergleich sehen Sie hier die Ausgabe einer normalen print()-Anweisung:

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

Die Ausgabe von pprint() ist definitiv besser lesbar. Sie bricht jedes Element des Dictionaries im Array direkt nach den Kommas ab und sortiert die Werte des Dictionaries nach dem Schlüssel.

Wenn Sie Ihre Schlüssel-Wert-Paare nicht nach Schlüssel sortiert haben wollen, dann ist pprint() nicht die richtige Funktion, da der Sortiermechanismus in die Funktion eingebaut ist.

Eine weitere Sache, die zu beachten ist, ist, dass pprint() verschachtelte Objekte, einschließlich verschachtelter Dictionaries, nicht schön ausgibt. Wenn Sie also erwarten, dass Ihre Werte verschachtelt sind, dann ist dies auch nicht die Lösung dafür.

Verwendung von json.dumps() zum Pretty-Printing eines Dictionaries in Python

Innerhalb des Python-Moduls json gibt es eine Funktion namens dumps(), die ein Python-Objekt in einen JSON-String konvertiert. Abgesehen von der Konvertierung formatiert sie das Dictionary auch in ein hübsches JSON-Format, so dass dies eine praktikable Möglichkeit sein kann, ein Dictionary hübsch auszudrucken, indem man es zuerst in JSON konvertiert.

Die Funktion dumps() akzeptiert 3 Parameter, die für das Pretty-Printing verwendet werden: das zu konvertierende Objekt, einen booleschen Wert sort_keys, der bestimmt, ob die Einträge nach Schlüssel sortiert werden sollen, und indent, der die Anzahl der Leerzeichen für die Einrückung angibt.

Wir verwenden für diese Lösung das gleiche BeispielDictionary wie oben. sort_keys wird auf False gesetzt, um die Sortierung zu deaktivieren, und indent wird auf 4 Leerzeichen gesetzt.

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))

Ausgabe:

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

Verglichen mit der Ausgabe der Funktion pprint() ist diese viel lesbarer, obwohl sie mehr Zeilen kostet, da sie im hübschen JSON-Format vorliegt.

Was ist, wenn die übergebenen Werte ein verschachteltes Dictionary in sich tragen? Lassen Sie uns das Beispiel ein wenig bearbeiten und einen Blick auf die Ausgabe werfen.

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))

Ausgabe:

[
    {
        "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"
        }
    }
]

Offensichtlich werden hübsche verschachtelte JSON-Wörterbücher mit json.dump() unterstützt, und optisch sieht es sauber und sehr lesbar aus, auch wenn es verschachtelt ist.

Verwenden Sie yaml.dump(), um ein Dictionary in Python hübsch auszudrucken

Eine andere Möglichkeit, ein Dictionary hübsch auszudrucken, ist die Verwendung der Funktion dump() des Moduls yaml. Sie erfüllt den gleichen Zweck wie die Funktion json.dumps(), allerdings im YAML-Format statt JSON.

Installieren Sie zunächst das YAML-Modul mit pip:

pip install pyyaml

, oder wenn Sie Python 3 und pip3 verwenden:

pip3 install pyyaml

Probieren wir es mit dem gleichen verschachtelten Beispiel aus, das im JSON-Beispiel verwendet wurde.

Beachten Sie den neuen Parameter default_flow_style, der bestimmt, ob der Ausgabestil des Dumps inline oder block sein soll. In diesem Fall sollte die Ausgabe im Block-Stil erfolgen, da sie lesbar sein soll, also setzen Sie diesen Parameter auf 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))

Ausgabe:

- 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

Zusammenfassend lässt sich sagen, dass es subjektiv ist, ob die YAML-Funktion dump() besser lesbar ist als die JSON-Funktion dumps() oder nicht. Es ist eine Frage der persönlichen Vorliebe oder welche Art von Ausgabe benötigt wird. Beide Funktionen schlagen die Ausgabe von pprint, wenn es um komplexere Datenstrukturen oder verschachtelte Objekte geht.

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

Verwandter Artikel - Python Dictionary

Verwandter Artikel - Python Print