Foros Python

Versión completa: diccionario python
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
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
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!
(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
Bien. Definitivamente hay muchas formas de implementar la función, la siguiente es una de ellas:

Código:
from itertools import zip_longest
from pprint import pprint


def grouper(iterable, n, fillvalue=None):
    "Collect data into fixed-length chunks or blocks"
    # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return zip_longest(*args, fillvalue=fillvalue)


def compras(despensa, lista):
    for producto, cantidad in grouper(lista, 2):
        for k in despensa:
            if producto in despensa[k]:
                despensa[k][producto] += cantidad
    return despensa


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
    }
}
lista = ["Chocolate", 10, "Doritos", 5, "Fanta", 40]

despensa = compras(despensa, lista)
pprint(despensa)

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

Código:
[('Chocolate', 10), ('Doritos', 5), ('Fanta', 40)]

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

Saludos!