Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
diccionario python
#1
Hola podrían ayudarme:c :

Para este modulo usaremos de forma predefinida el siguiente diccionario: 
Despensa={’Carnes’:{’Vacuno’:55,’Pollo’:45,’Cerdo’:30},’Galletas’:{’Rellenas’:25,’Mantequilla’: 40,’Limon’:10, ’Chocolate’:30},’Frituras’:{’Papas Fritas’: 30, ’Doritos’: 23, ’Ramitas’: 15},’Bebidas’: {’Coca Cola’: 25, ’Sprite’: 25, ’Fanta’: 25}} 

Usted solo ira a comprar de lo que tiene, pues con esa variedad esta bien para sus invitados. El supermercado le entrega todos los artículos en una lista como la del siguiente ejemplo:
L=[’Chocolate’,10,’Doritos’,5,’Fanta’,40] Donde en las posiciones impares de la lista esta el elemento comprado y en la posicion par siguiente, la cantidad del elemento comprado. Cree una funcion Compras(Despensa,Lista): que recibe la despensa y la lista con los elementos comprados en el supermercado, la cual agregue todo lo comprado a la despensa (diccionario)... 

podrían ayudarme porfavor gracias Smile
Responder
#2
Hola, ¿cómo estás?

En particular, ¿dónde tenés el problema? Ya que de antemano sabes cuáles son las claves principales (Carnes, Galletas, Frituras, Bebidas), tu función debería buscar en ellas cada elemento de la lista. Para conocer si un número es par puedes usar la operación resto: n es par si n % 2 == 0.

Saludos!
Responder
#3
(29-10-2017, 02:00 PM)Francisco escribió: Hola, ¿cómo estás?

En particular, ¿dónde tenés el problema? Ya que de antemano sabes cuáles son las claves principales (Carnes, Galletas, Frituras, Bebidas), tu función debería buscar en ellas cada elemento de la lista. Para conocer si un número es par puedes usar la operación resto: n es par si n % 2 == 0.

Saludos!

Mi problema es que nose como meter la lista "L=[’Chocolate’,10,’Doritos’,5,’Fanta’,40]" al diccionario que me dieron de un principio, nose como crear esa función que me logre introducir esta lista al diccionario mencionado, me puedes ayudar porfavor
Responder
#4
Bien. Definitivamente hay muchas formas de implementar la función, la siguiente es una de ellas:

  1. from itertools import zip_longest
  2. from pprint import pprint
  3.  
  4.  
  5. def grouper(iterable, n, fillvalue=None):
  6. "Collect data into fixed-length chunks or blocks"
  7. # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx"
  8. args = [iter(iterable)] * n
  9. return zip_longest(*args, fillvalue=fillvalue)
  10.  
  11.  
  12. def compras(despensa, lista):
  13. for producto, cantidad in grouper(lista, 2):
  14. for k in despensa:
  15. if producto in despensa[k]:
  16. despensa[k][producto] += cantidad
  17. return despensa
  18.  
  19.  
  20. despensa = {
  21. "Carnes": {
  22. "Vacuno": 55,
  23. "Pollo": 45,
  24. "Cerdo": 30
  25. },
  26. "Galletas": {
  27. "Rellenas": 25,
  28. "Mantequilla": 40,
  29. "Limon": 10,
  30. "Chocolate": 30
  31. },
  32. "Frituras": {
  33. "Papas Fritas": 30,
  34. "Doritos": 23,
  35. "Ramitas": 15
  36. },
  37. "Bebidas": {
  38. "Coca Cola": 25,
  39. "Sprite": 25,
  40. "Fanta": 25
  41. }
  42. }
  43. lista = ["Chocolate", 10, "Doritos", 5, "Fanta", 40]
  44.  
  45. despensa = compras(despensa, lista)
  46. pprint(despensa)


Utilicé la función grouper() para reestructurar la lista de productos comprados de la siguiente forma:

  1. [('Chocolate', 10), ('Doritos', 5), ('Fanta', 40)]


Así, agrupados los productos con su respectiva cantidad en tuplas, es más fácil de recorrer.

Saludos!
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)