Este é o dicionário
cars = {'A':{'speed':70,
'color':2},
'B':{'speed':60,
'color':3}}
Usando isto for loop
for keys,values in cars.items():
print(keys)
print(values)
Imprime o seguinte:
B
{'color': 3, 'speed': 60}
A
{'color': 2, 'speed': 70}
Mas quero que o programa o imprima assim:
B
color : 3
speed : 60
A
color : 2
speed : 70
Comecei a aprender dicionários, então não tenho certeza de como fazer isso.
python
printing
dictionary
Jett
fonte
fonte
cars = {1:4, 2:5}
, em seguida,cars[x]
é um inteiro mapeado para a chavex
em vez de um conjunto mapeado para a chavex
. Nesse caso, você não precisa usar afor y in cars[x]:
linha porque há apenas um valor que está sendo recuperado, a menos que esteja usando algo como uma lista ou conjunto de números inteiros, pois deve funcionar. Desculpe, já faz alguns meses, então não me lembro completamente de como cheguei à conclusão do meu comentário anterior. Você poderia me enviar seu código e posso ver se tenho alguma ajuda.Você pode usar o
json
módulo para isso. Adumps
função neste módulo converte um objeto JSON em uma string formatada corretamente, que você pode imprimir.A saída parece
A documentação também especifica várias opções úteis para esse método.
fonte
print(json.dumps(cars, indent=4, ensure_ascii=False))
porque, caso contrário, caracteres não ASCII são ilegíveis.Uma solução mais generalizada que lida com ditados e listas aninhados arbitrariamente e profundamente seria:
Isso produz a saída:
Encontrei uma necessidade semelhante e desenvolvi uma função mais robusta como exercício para mim. Estou incluindo aqui caso seja de valor para outro. Ao executar o nosetest, também achei útil poder especificar o fluxo de saída na chamada para que o sys.stderr pudesse ser usado.
Usando esta função, a saída do OP fica assim:
que eu pessoalmente achei mais útil e descritivo.
Dado o exemplo um pouco menos trivial de:
A solução solicitada pelo OP produz o seguinte:
considerando que a versão 'aprimorada' gera isso:
Espero que isso ofereça algum valor para a próxima pessoa que procura esse tipo de funcionalidade.
fonte
pprint.pprint()
aqui, então?Você tem uma estrutura aninhada, portanto, você também precisa formatar o dicionário aninhado:
Isso imprime:
fonte
pprint.pprint()
é uma boa ferramenta para este trabalho:fonte
fonte
Isso funcionará se você souber que a árvore possui apenas dois níveis:
fonte
Verifique a seguinte linha:
Resultado:
fonte
sys.modules
, mas falhei. Quer tentar?Eu prefiro a formatação limpa de
yaml
:resultado:
fonte
pip install PyYAML
primeiro.fonte
fonte
Aqui está a minha solução para o problema. Eu acho que é semelhante na abordagem, mas um pouco mais simples do que algumas das outras respostas. Ele também permite um número arbitrário de subdicionários e parece funcionar para qualquer tipo de dados (eu até testei em um dicionário que tinha funções como valores):
fonte
Modificando o código MrWonderful
fonte