Pretty Imprimir um Dicionário Bonito em Python
-
Utilizar
pprint()
para imprimir um dicionário em Python -
Utilize
json.dumps()
para imprimir bonito um dicionário em Python -
Utilize
yaml.dump()
para imprimir um dicionário em Python
Este tutorial irá introduzir como imprimir um dicionário bonito em Python. A impressão bonita significa apresentar algo num formato ou estilo mais legível.
Utilizar pprint()
para imprimir um dicionário em Python
pprint
é um módulo Python que fornece a capacidade de imprimir tipos de dados Python de forma bonita para ser mais legível. Este módulo também suporta o dicionário de bonita impressão.
Dentro do módulo pprint
existe uma função com o mesmo nome pprint()
, que é a função utilizada para imprimir bonito a string ou objecto dado.
Em primeiro lugar, declarar um array de dicionários. Depois, imprimi-la bonita utilizando a função 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)
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'}]
Para comparar, abaixo está a saída de uma declaração normal 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"},
]
A saída pprint()
é definitivamente mais legível. O que faz é quebrar cada elemento do dicionário no array logo a seguir às vírgulas, ordenando também os valores do dicionário por chave.
Se não quiser os seus pares de valores de chave ordenados por chave, então pprint()
não é a função a utilizar, uma vez que o seu mecanismo de ordenação está incorporado na função.
Outra coisa a notar é que pprint()
não irá imprimir objectos bem aninhados, incluindo dicionários aninhados. Portanto, se espera que os seus valores sejam aninhados, então esta não é também a solução para isso.
Utilize json.dumps()
para imprimir bonito um dicionário em Python
Dentro do módulo Python json
, existe uma função chamada dumps()
, que converte um objecto Python numa string JSON. Para além da conversão, também formata o dicionário num bonito formato JSON, pelo que esta pode ser uma forma viável de imprimir um dicionário bonito, convertendo-o primeiro em JSON.
A função dumps()
aceita 3 parâmetros utilizados para impressão bonita: o objecto para conversão, um valor booleano sort_keys
, que determina se as entradas devem ser ordenadas por chave, e indent
, que especifica o número de espaços para indentação.
Utilizaremos o mesmo dicionário de exemplo acima para esta solução. As sort_keys
estão definidas para False
para desactivar a ordenação, e indent
está definido para espaços de 4
.
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"
}
]
Em comparação com a saída da função pprint()
, isto é muito mais legível, embora custe mais linhas, uma vez que está em formato JSON bonito.
E se os valores dados tiverem um dicionário aninhado dentro deles? Vamos editar um pouco o exemplo e dar uma vista de olhos à saída.
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))
Resultado:
[
{
"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, os lindos dicionários aninhados JSON são suportados utilizando json.dump()
, e visualmente parece limpo e muito legível, mesmo que esteja aninhado.
Utilize yaml.dump()
para imprimir um dicionário em Python
Outra forma de imprimir um dicionário bonito é utilizando a função dump()
do módulo yaml
. Serve o mesmo propósito que a função json.dumps()
mas em formato YAML em vez de JSON.
Primeiro, instalar o módulo YAML utilizando a função pip
:
pip install pyyaml
ou se utilizar Python 3 e pip3
:
pip3 install pyyaml
Vamos experimentá-lo com o mesmo exemplo aninhado utilizado no exemplo JSON.
Tomar nota do novo parâmetro default_flow_style
, que determina se o estilo de saída do despejo deve ser inline
ou block
. Neste caso, a saída deve ser no estilo bloco, uma vez que queremos que seja legível, por isso, defina este parâmetro para 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))
Resultado:
- 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
Em resumo, é subjectivo se a função YAML dump()
é ou não mais legível do que a função JSON dumps()
. Depende da preferência pessoal ou do tipo de saída que é necessária. Ambas as funções batem a saída de pprint
quando se trata de estruturas de dados mais complexas ou de objectos aninhados.
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.
LinkedInArtigo relacionado - Python Dictionary
- Como verificar se uma chave existe em um dicionário em Python
- Converter um dicionário em uma lista em Python
- Como obter todos os arquivos de um diretório
- Encontrar o Valor Máximo no Dicionário Python
- Como Ordenar um Dicionário Python por Valor
- Como fundir dois dicionários em Python 2 e 3