Impresión bonita de un diccionario en Python
-
Utilice
pprint()
para imprimir un diccionario en Python -
Utilice
json.dumps()
para imprimir un diccionario en Python -
Usar
yaml.dump()
para imprimir un diccionario en Python
Este tutorial presenta cómo imprimir un diccionario en Python. La impresión bonita significa presentar algo en un formato o estilo más legible.
Utilice pprint()
para imprimir un diccionario en Python
pprint
es un módulo de Python que proporciona la capacidad de imprimir de forma bonita los tipos de datos de Python para que sean más legibles. Este módulo también soporta la impresión bonita de diccionarios.
Dentro del módulo pprint
hay una función con el mismo nombre pprint()
, que es la función que se utiliza para la impresión bonita de la cadena u objeto dado.
Primero, declara un array de diccionarios. Después, imprímelo usando la función 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)
Producción :
[{'Age': '23', 'Country': 'USA', 'Name': 'John'},
{'Age': '44', 'Country': 'Spain', 'Name': 'Jose'},
{'Age': '29', 'Country': 'UK', 'Name': 'Anne'},
{'Age': '35', 'Country': 'Japan', 'Name': 'Lee'}]
Para comparar, a continuación se muestra la salida de una sentencia print()
normal:
[
{"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 salida de pprint()
es definitivamente más legible. Lo que hace es romper cada elemento del diccionario en el array justo después de las comas mientras que también ordena los valores del diccionario por clave.
Si no quiere que sus pares clave-valor estén ordenados por clave, entonces pprint()
no es la función que debe utilizar ya que su mecanismo de ordenación está incorporado en la función.
Otra cosa a tener en cuenta es que pprint()
no imprimirá bien los objetos anidados, incluyendo los diccionarios anidados. Así que si espera que sus valores estén anidados, entonces esta no es la solución para eso también.
Utilice json.dumps()
para imprimir un diccionario en Python
Dentro del módulo json
de Python, hay una función llamada dumps()
, que convierte un objeto Python en una cadena JSON. Además de la conversión, también formatea el diccionario en un formato JSON bonito, por lo que puede ser una forma viable de imprimir un diccionario convirtiéndolo primero en JSON.
La función dumps()
acepta 3 parámetros utilizados para la impresión bonita: el objeto a convertir, un valor booleano sort_keys
, que determina si las entradas deben ser ordenadas por clave, y indent
, que especifica el número de espacios para la sangría.
Utilizaremos el mismo diccionario de ejemplo que el anterior para esta solución. El valor de sort_keys
es False
para desactivar la ordenación, y el valor de indent
es de 4
espacios.
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))
Resultado:
[
{
"Age": "23",
"Country": "USA",
"Name": "John"
},
{
"Age": "44",
"Country": "Spain",
"Name": "Jose"
},
{
"Age": "29",
"Country": "UK",
"Name": "Anne"
},
{
"Age": "35",
"Country": "Japan",
"Name": "Lee"
}
]
Comparado con la salida de la función pprint()
, esto es mucho más legible, aunque cuesta más líneas ya que está en un bonito formato JSON.
¿Qué pasa si los valores dados tienen un diccionario anidado dentro de ellos? Editemos un poco el ejemplo y veamos la salida.
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))
Producción :
[
{
"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, los diccionarios anidados JSON bonitos son soportados usando json.dump()
, y visualmente se ve limpio y muy legible incluso si está anidado.
Usar yaml.dump()
para imprimir un diccionario en Python
Otra forma de imprimir un diccionario es utilizando la función dump()
del módulo yaml
. Sirve el mismo propósito que la función json.dumps()
pero en formato YAML en lugar de JSON.
Primero, instala el módulo YAML usando pip
:
pip install pyyaml
o si usas Python 3 y pip3
:
pip3 install pyyaml
Vamos a probarlo con el mismo ejemplo anidado utilizado en el ejemplo JSON.
Fíjate en el nuevo parámetro default_flow_style
, que determina si el estilo de salida del volcado debe ser inline
o block
. En este caso, la salida debe ser de estilo bloque ya que queremos que sea legible, así que establece este parámetro a 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))
Producción :
- 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 resumen, es subjetivo si la función YAML dump()
es más legible o no que la función JSON dumps()
. Depende de la preferencia personal o del tipo de salida que se requiera. Ambas funciones superan la salida de pprint
cuando se trata de estructuras de datos más complejas o de objetos anidados.
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.
LinkedInArtículo relacionado - Python Dictionary
- Cómo comprobar si existe una clave en un diccionario en Python
- Convertir un diccionario en una lista en Python
- Cómo obtener todos los archivos de un directorio
- Cómo encontrar el valor máximo en el Diccionario Python
- Cómo ordenar un diccionario Python por valor
- Cómo fusionar dos diccionarios en Python 2 y 3