Stampa graziosa di un dizionario in Python
-
Usa
pprint()
per stampare graziosamente un dizionario in Python -
Usa
json.dumps()
per stampare graziosamente un dizionario in Python -
Usa
yaml.dump()
per stampare graziosamente un dizionario in Python
Questo tutorial introdurrà come stampare graziosamente un dizionario in Python. Bella stampa significa presentare qualcosa in un formato o uno stile più leggibile.
Usa pprint()
per stampare graziosamente un dizionario in Python
pprint
è un modulo Python che fornisce la capacità di stampare in modo carino i tipi di dati Python per essere più leggibili. Questo modulo supporta anche un dizionario grazioso.
All’interno del modulo pprint
c’è una funzione con lo stesso nome pprint()
, che è la funzione usata per stampare in modo carino la stringa o l’oggetto dato.
Innanzitutto, dichiara un array di dizionari. Successivamente, stampalo usando la funzione 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)
Produzione:
[{'Age': '23', 'Country': 'USA', 'Name': 'John'},
{'Age': '44', 'Country': 'Spain', 'Name': 'Jose'},
{'Age': '29', 'Country': 'UK', 'Name': 'Anne'},
{'Age': '35', 'Country': 'Japan', 'Name': 'Lee'}]
Per confrontare, di seguito è riportato l’output di una normale istruzione print()
:
[
{"Name": "John", "Age": "23", "Country": "USA"},
{"Name": "Jose", "Age": "44", "Country": "Spain"},
{"Name": "Anne", "Age": "29", "Country": "UK"},
{"Name": "Lee", "Age": "35", "Country": "Japan"},
]
L’output di pprint()
è decisamente più leggibile. Quello che fa è spezzare ogni elemento del dizionario nell’array subito dopo le virgole mentre ordina anche i valori del dizionario per chiave.
Se non vuoi che le tue coppie chiave-valore siano ordinate per chiave, allora pprint()
non è la funzione da usare poiché il suo meccanismo di ordinamento è incorporato nella funzione.
Un’altra cosa da notare è che pprint()
non stamperà abbastanza gli oggetti annidati, inclusi i dizionari annidati. Quindi, se ti aspetti che i tuoi valori siano nidificati, questa non è la soluzione anche per questo.
Usa json.dumps()
per stampare graziosamente un dizionario in Python
All’interno del modulo Python json
, c’è una funzione chiamata dumps()
, che converte un oggetto Python in una stringa JSON. A parte la conversione, formatta anche il dizionario in un bel formato JSON, quindi questo può essere un modo praticabile per stampare piuttosto un dizionario convertendolo prima in JSON.
La funzione dumps()
accetta 3 parametri usati per la bella stampa: l’oggetto per la conversione, un valore booleano sort_keys
, che determina se le voci devono essere ordinate per chiave, e indent
, che specifica il numero di spazi per rientranza.
Useremo lo stesso dizionario di esempio come sopra per questa soluzione. sort_keys
è impostato su False
per disabilitare l’ordinamento, e indent
è impostato su 4
spazi.
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))
Produzione:
[
{
"Age": "23",
"Country": "USA",
"Name": "John"
},
{
"Age": "44",
"Country": "Spain",
"Name": "Jose"
},
{
"Age": "29",
"Country": "UK",
"Name": "Anne"
},
{
"Age": "35",
"Country": "Japan",
"Name": "Lee"
}
]
Rispetto all’output della funzione pprint()
, questo è molto più leggibile, anche se costa più righe poiché è in un bel formato JSON.
Cosa succede se i valori forniti hanno un dizionario annidato al loro interno? Modifichiamo un po’ l’esempio e diamo un’occhiata all’output.
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))
Produzione:
[
{
"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"
}
}
]
Evidentemente, i graziosi dizionari annidati JSON sono supportati usando json.dump()
, e visivamente sembra pulito e molto leggibile anche se è annidato.
Usa yaml.dump()
per stampare graziosamente un dizionario in Python
Un altro modo per stampare un dizionario è usare la funzione dump()
del modulo yaml
. Ha lo stesso scopo della funzione json.dumps()
ma in formato YAML invece di JSON.
Prima di tutto, installa il modulo YAML usando pip
:
pip install pyyaml
o se si utilizza Python 3 e pip3
:
pip3 install pyyaml
Proviamolo con lo stesso esempio nidificato usato nell’esempio JSON.
Prendi nota del nuovo parametro default_flow_style
, che determina se lo stile di output del dump deve essere inline
o block
. In questo caso, l’output dovrebbe essere in stile blocco poiché vogliamo che sia leggibile, quindi imposta questo parametro su 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))
Produzione:
- 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
In sintesi, è soggettivo se la funzione YAML dump()
sia più leggibile o meno di JSON dumps()
. Dipende dalle preferenze personali o dal tipo di output richiesto. Entrambe le funzioni battono l’output di pprint
quando si tratta di strutture dati più complesse o oggetti annidati.
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.
LinkedInArticolo correlato - Python Dictionary
- Come controllare se una chiave esiste in un dizionario in Python
- Converti un dizionario in una lista in Python
- Come ottenere tutti i file di una directory
- Trova il valore massimo nel dizionario Python
- Come ordinare un dizionario di Python per valore
- Come fondere due dizionari in Python 2 e 3