Python - Bibliotecas anidadas

 
Vista:
Imágen de perfil de Ivan
Val: 16
Ha aumentado su posición en 212 puestos en Python (en relación al último mes)
Gráfica de Python

Bibliotecas anidadas

Publicado por Ivan (4 intervenciones) el 23/06/2021 02:24:05
Hola a todos.
Tengo la siguiente pregunta, y agradecería mucho a quien me pudiera ayudar: Tengo la siguiente biblioteca anidada, como podría programar un código que me arrojara el nombre del producto con el precio mayor; el nombre del producto con el precio menor; Y el valor total del inventario (multiplicando el precio de cada producto por el inventario disponible).

1
2
3
Productos = { 1 : { "nombre" : "Tangelos" , "Precio": 9000.0 , "inventario": 67 },  2 : { "nombre" : "Limones" , "Precio": 2500.0 , "inventario": 35 }, 3 : { "nombre" : "Peras" , "Precio": 2700.0 , "inventario": 62 } ,
4 : { "nombre" : "Arandanos" , "Precio": 9300.0 , "inventario": 34 }, 5 : { "nombre" : "Tomates" , "Precio": 8100.0 , "inventario": 42 }, 6 : { "nombre" : "Fresas" , "Precio": 9100.0 , "inventario": 90 }, 7 : { "nombre" : "Helado" , "Precio": 4500.0 , "inventario": 41 },
8 : { "nombre" : "Galletas" , "Precio": 700.0 , "inventario": 18 }, 9 : { "nombre" : "Chocolates" , "Precio": 4500.0 , "inventario": 80 }, 10 : { "nombre" : "Jamon" , "Precio": 11000.0 , "inventario": 55 } }

De antemano muchísimas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-1
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Bibliotecas anidadas

Publicado por tincopasan (1082 intervenciones) el 23/06/2021 04:33:21
1) ¿bibliotecas anidadas? es un diccionario de diccionarios
2) es muy simple
3) ¿qué has intentado?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ivan
Val: 16
Ha aumentado su posición en 212 puestos en Python (en relación al último mes)
Gráfica de Python

Bibliotecas anidadas

Publicado por Ivan (4 intervenciones) el 26/06/2021 02:26:15
Hola, gracias por su respuesta tincopasan.
Si fue un error que cometí, en efecto son diccionarios de diccionarios.
Si, fue bastante simple; esta es la forma en el que lo realice:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
def inventario(tienda):
  valor=0
  for i in tienda:
    valor+=tienda[i][1]*tienda[i][2]
  return valor
 
def nombre_precio_mayor(tienda):
  claves = list(tienda.keys())
  mayor =tienda[claves[0]][1]
  nombre =tienda[claves[0]][0]
  for i in tienda:
    if tienda[i][1]>mayor:
      mayor=tienda[i][1]
      nombre=tienda[i][0]
  return(nombre)
 
def nombre_precio_menor(tienda):
  claves = list(tienda.keys()) #
  menor =tienda[claves[0]][1]
  nombre =tienda[claves[0]][0]
  for i in tienda:
    if tienda[i][1]<menor:
      menor=tienda[i][1]
      nombre=tienda[i][0]
  return(nombre)
 
def principal():
  tienda={1:['Tangelos',9000.0,67],
          2:['Limones',2500.0,35],
          3:['Peras',2700.0,65],
          4:['Arandanos',9300.0,34],
          5:['Tomates',8100.0,42],
          6:['Fresas',9100.0,90],
          7:['Helado',4500.0,41],
          8:['Galletas',700.0,18],
          9:['Chocolates',4500.0,80],
          10:['Jamon',11000.0,55]}
 
 
  print(nombre_precio_mayor(tienda),nombre_precio_menor(tienda),round(inventario(tienda),1))
 
principal()

No se si tal vez me puedan dar un consejo o su opinión para mejorar, gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Francisco Javier
Val: 249
Ha aumentado su posición en 29 puestos en Python (en relación al último mes)
Gráfica de Python

Bibliotecas anidadas

Publicado por Francisco Javier (313 intervenciones) el 26/06/2021 18:33:55
Hola buenas, he visto que al no sacar tienda de la funcion es local y no global y no la identifican, hay error de indentacion pero supongo que será de a la hora de copiar el código. a nivel de presentación con" pandas" si se puede hacer de otra manera como te expongo a continuación y anivel de programación seguro se puede hacer mejor y voy a investigar otras maneras. Un saludo y aquí te dejo tu código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# -*- coding: utf-8 -*-
#!/usr/bin/python
import pandas as pd
 
def inventario(tienda):
  valor=0
  for i in tienda:
    valor+=tienda[i][1]*tienda[i][2]
  return valor
 
def nombre_precio_mayor(tienda):
  claves = list(tienda.keys())
  mayor =tienda[claves[0]][1]
  nombre =tienda[claves[0]][0]
  for i in tienda:
    if tienda[i][1]>mayor:
      mayor=tienda[i][1]
      nombre=tienda[i][0]
  return(nombre)
 
def nombre_precio_menor(tienda):
  claves = list(tienda.keys()) #
  menor =tienda[claves[0]][1]
  nombre =tienda[claves[0]][0]
  for i in tienda:
    if tienda[i][1]<menor:
      menor=tienda[i][1]
      nombre=tienda[i][0]
  return(nombre)
 
tienda= pd.DataFrame({  1:['Tangelos',9000.0,67],
          2:['Limones',2500.0,35],
          3:['Peras',2700.0,65],
          4:['Arandanos',9300.0,34],
          5:['Tomates',8100.0,42],
          6:['Fresas',9100.0,90],
          7:['Helado',4500.0,41],
          8:['Galletas',700.0,18],
          9:['Chocolates',4500.0,80],
          10:['Jamon',11000.0,55]})
print('\n''-----------------------------INVENTARIO------------------------------------------\n')
print(tienda)
 
print('_________________________________________REGISTROS______________________________________________')
 
print(' El producto con mayor precio es: {}\n El producto con menor precio es:{}\n El total de todos los productos es de: {}'.format(nombre_precio_mayor(tienda),nombre_precio_menor(tienda),inventario(tienda)))
Un saludo y vamos hablando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Bibliotecas anidadas

Publicado por tincopasan (1082 intervenciones) el 26/06/2021 21:14:56
Que bueno que lo pudiste resolver, no sé a que te referís con mejorar, pero lo hubiese hecho así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#-*- coding:utf-8 -*-
def principal():
    tienda={1:['Tangelos',9000.0,67],
          2:['Limones',2500.0,35],
          3:['Peras',2700.0,65],
          4:['Arandanos',9300.0,34],
          5:['Tomates',8100.0,42],
          6:['Fresas',9100.0,90],
          7:['Helado',4500.0,41],
          8:['Galletas',700.0,18],
          9:['Chocolates',4500.0,80],
          10:['Jamon',11000.0,55]}
 
    ordenado= sorted(list(tienda.values()),key=lambda x: x[1])
    total = sum(pre*can for pro,pre,can in ordenado)
 
    print(f"""Producto con precio mayor: {ordenado[-1][0]}
Producto con precio menor: {ordenado[0][0]}
Monto total = {total}
""")
 
if __name__=="__main__":
    principal()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar