Este es el diccionario
cars = {'A':{'speed':70,
'color':2},
'B':{'speed':60,
'color':3}}
Usando esto for loop
for keys,values in cars.items():
print(keys)
print(values)
Imprime lo siguiente:
B
{'color': 3, 'speed': 60}
A
{'color': 2, 'speed': 70}
Pero quiero que el programa lo imprima así:
B
color : 3
speed : 60
A
color : 2
speed : 70
Acabo de empezar a aprender diccionarios, así que no estoy seguro de cómo hacerlo.
python
printing
dictionary
Jett
fuente
fuente
cars = {1:4, 2:5}
secars[x]
trata de un entero asignado a la clave enx
lugar de un conjunto asignado a la clavex
. En este caso, no necesita usar lafor y in cars[x]:
línea porque solo está recuperando un valor, a menos que esté usando algo como una lista o un conjunto de enteros, entonces debería funcionar. Lo siento, han pasado unos meses, así que no puedo recordar por completo cómo llegué a la conclusión de mi comentario anterior. Podrías enviarme tu código y puedo ver si soy de alguna ayuda.Podrías usar el
json
módulo para esto. Ladumps
función en este módulo convierte un objeto JSON en una cadena con el formato adecuado que luego puede imprimir.La salida se ve como
La documentación también especifica un montón de opciones útiles para este método.
fuente
print(json.dumps(cars, indent=4, ensure_ascii=False))
porque de lo contrario los caracteres que no son ASCII son ilegibles.Una solución más generalizada que maneja dictados y listas arbitrariamente anidadas sería:
Esto produce la salida:
Me encontré con una necesidad similar y desarrollé una función más robusta como ejercicio para mí. Lo incluyo aquí en caso de que pueda ser de valor para otro. Al ejecutar nosetest, también me pareció útil poder especificar la secuencia de salida en la llamada para que se pueda usar sys.stderr en su lugar.
Usando esta función, la salida del OP se ve así:
que personalmente encontré más útil y descriptivo.
Dado el ejemplo un poco menos trivial de:
La solución solicitada por el OP produce esto:
mientras que la versión 'mejorada' produce esto:
Espero que esto brinde algún valor a la próxima persona que busque este tipo de funcionalidad.
fuente
pprint.pprint()
aquí entonces?Tiene una estructura anidada, por lo que también debe formatear el diccionario anidado:
Esto imprime:
fuente
pprint.pprint()
es una buena herramienta para este trabajo:fuente
fuente
Esto funcionará si sabe que el árbol solo tiene dos niveles:
fuente
Verifique el siguiente one-liner:
Salida:
fuente
sys.modules
, pero fallé. ¿Quieres intentarlo?Prefiero el formato limpio de
yaml
:salida:
fuente
pip install PyYAML
primero.fuente
fuente
Aquí está mi solución al problema. Creo que es similar en enfoque, pero un poco más simple que algunas de las otras respuestas. También permite un número arbitrario de sub-diccionarios y parece funcionar para cualquier tipo de datos (incluso lo probé en un diccionario que tenía funciones como valores):
fuente
Modificando el código MrWonderful
fuente