Autor Tema: Imprimir por pantalla un diccionario “limpio”  (Leído 1501 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Imprimir por pantalla un diccionario “limpio”
« en: 01 de Noviembre de 2021, 11:34:52 »
Parezco una revista que había en otros tiempos(Argentina) “Juan y el preguntón” jaja-jaja.
Bueno x mas que busco no encuentro la solución, lo que no puedo hacer es que la impresión salga limpia, el diccionario sin la lista en su interior todo ok. Pero con la lista no lo logro, les dejo lo que llevo hecho.

Lo primero, el programita para practicar con diccionarios:

Código: Python
  1. productos = {}
  2. while True:
  3.     codigo = input("\n Ingrese el código del producto...: ")
  4.     if not codigo:
  5.         break
  6.     nombre = input("\n Ingrese el nombre del producto...: ")
  7.     if not nombre:
  8.         break
  9.     precio = input("\n Ingrese el precio del producto...: ")
  10.     if not precio:
  11.         break
  12.    
  13.     productos[codigo] = [nombre, precio]
  14.    
  15.    
  16. for llaves, producto in productos.items():
  17.   print(llaves, ' - ', producto)

Este es con lo que estoy practicando ¿Cómo le saco los corchetes?:

Código: Python
  1. productos = {520 : ["Tomate", 125.50], 126 : ["Arveja", 98.50], 134 : ["Morron", 105.00]}
  2. for llaves, producto in productos.items():
  3.     print(llaves, '-', producto)

Código: Python
  1. 520 - ['Tomate', 125.5]
  2. 126 - ['Arveja', 98.5]
  3. 134 - ['Morron', 105.0]
Desde ya muchas gracias, slds. Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re:Imprimir por pantalla un diccionario “limpio”
« Respuesta #1 en: 01 de Noviembre de 2021, 12:43:54 »
A ver así:
Código: Python
  1. productos = {520 : ["Tomate", 125.50], 126 : ["Arveja", 98.50], 134 : ["Morron", 105.00]}
  2. for llaves, producto in productos.items():
  3.     print(llaves, end="-")
  4.     for i in producto:
  5.         print (i, end=",")
  6.     print ("\b \r")

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Re:Imprimir por pantalla un diccionario “limpio”
« Respuesta #2 en: 01 de Noviembre de 2021, 13:07:02 »
Gracias nocturno, un sueño como funciona, te pido un último favor(con respecto a este tema, claro) te muestro como quiero imprimirlo pero sin los 3 puntos finales y el signo $.

Código: Python
  1. for llaves, producto in productos.items():
  2.     print(llaves, end=" - ")
  3.     for i in producto:
  4.         print (i, end="...$ ")
  5.     print ("\b \r")

Código: Python
  1. 520 - Tomate...$ 125.5...$
  2. 126 - Arveja...$ 98.5...$
  3. 134 - Morron...$ 105.0...$

Saludos y lo mejor para vos.Daniel.
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re:Imprimir por pantalla un diccionario “limpio”
« Respuesta #3 en: 01 de Noviembre de 2021, 13:11:59 »
No es muy elegante, porque lo que hago es borrar los últimos "...$" de cada línea, pero funciona:

Código: Python
  1. productos = {520 : ["Tomate", 125.50], 126 : ["Arveja", 98.50], 134 : ["Morron", 105.00]}
  2. for llaves, producto in productos.items():
  3.     print(llaves, end="-")
  4.     for i in producto:
  5.         print (i, end="...$")
  6.     print ("\b\b\b\b    \r")

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Imprimir por pantalla un diccionario “limpio”
« Respuesta #4 en: 01 de Noviembre de 2021, 15:20:50 »
Código: Python
  1. productos = {520 : ["Tomate", 125.50], 126 : ["Arveja", 98.50], 134 : ["Morron", 105.00]}
  2. for llaves, producto in productos.items():
  3.     print("{} - {}... ${}".format(llaves, producto[0], producto[1]))

Código: [Seleccionar]
520 - Tomate... $125.5
126 - Arveja... $98.5
134 - Morron... $105.0

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Imprimir por pantalla un diccionario “limpio”
« Respuesta #5 en: 01 de Noviembre de 2021, 15:25:13 »
Una forma de imprimir una lista con el mismo separador entre los elementos es:
lista = [1, 2, 3, 4]
print(";".join(lista))

Y la salida será:
1;2;3;4

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Re:Imprimir por pantalla un diccionario “limpio”
« Respuesta #6 en: 01 de Noviembre de 2021, 15:58:45 »
Gracias a todos x ayudarme, cuando vi format me acorde de string-f y me salió esto, ¿es igualmente valido, no?

Código: Python
  1. productos = {520 : ["Tomate", 125.50], 126 : ["Arveja", 98.50], 134 : ["Morron", 105.00]}
  2. for llaves, producto in productos.items():
  3.     print(f"{llaves} - {producto[0]}...$ {producto[1]:>8.2f}")

Código: Python
  1. 520 - Tomate...$   125.50
  2. 126 - Arveja...$    98.50
  3. 134 - Morron...$   105.00

Perdón, tiene que hacerse de esta manera porque de lo contrario da error(el campo precio, coma flotante)

Código: Python
  1. for llaves, producto in productos.items():
  2.     print(f"{llaves} - {producto[0]}...$ {float(producto[1]):>8.2f}")
Saludos y gracias.
Daniel
« Última modificación: 01 de Noviembre de 2021, 16:35:02 por Daniel1952 »
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Imprimir por pantalla un diccionario “limpio”
« Respuesta #7 en: 01 de Noviembre de 2021, 16:44:22 »
Los dos funcionan porque producto[1] ya es un número en coma flotante.
Está genial. Ya vas conociendo mejor el lenguaje.

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Re:Imprimir por pantalla un diccionario “limpio”
« Respuesta #8 en: 01 de Noviembre de 2021, 17:30:18 »
Estoy tratando, me tengo mucha fe, tengo que hacer un gran esfuerzo para no ser tan “vago” y buscar mas en internet y no tanto en los foros, lo que ocurre es que me tienta porque con Uds. es un trato directo y con el amigo google si no hago la consulta “correctamente” algo me pierdo, “es muy torpe y muchas veces no entiende lo que uno necesita”, paciencia  :) :) :).-
No tomes esto como algo solapado, lo que ocurre es que vi tantos “tirones de oreja” con aquello de que “aquí no se hacen las tareas” que por momento me da cierto resquemor preguntar tan seguido, igual Uds. me dirán si les estoy quitando demasiado tiempo.-
Un abrazo enorme desde Argentina.-
Slds. Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re:Imprimir por pantalla un diccionario “limpio”
« Respuesta #9 en: 02 de Noviembre de 2021, 02:37:22 »
No Daniel, tu caso es muy diferente y positivo para todos los que visitan el foro ya que aportas tu código y preguntas cosas concretas.

Aquí no ayudamos a aquellos que vienen pidiendo que se lo hagan entero, y ni siquiera suben su código porque no lo tienen.

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Imprimir por pantalla un diccionario “limpio”
« Respuesta #10 en: 02 de Noviembre de 2021, 11:04:55 »
Pienso lo mismo.
Adelante con las preguntas.  ((:-))


 

anything