specialist/shopinglist.py

72 lines
2.4 KiB
Python

class ShoppingList(dict):
def __init__(self, data):
return super().__init__(data)
def multiply(self, k: float):
new_ingredients = self.copy()
for key,value in new_ingredients.items():
new_ingredients[key] = value * k
return new_ingredients
def add(self, ingredients: dict):
new_ingredients = self.copy()
for key1,value1 in self.items():
for key2,value2 in ingredients.items():
if key1 == key2:
new_ingredients[key1] = value1 + value2
elif key2 not in new_ingredients:
new_ingredients.update({key2: value2})
return new_ingredients
def __add__(self, other):
new_list = self.copy()
for key1,value1 in self.items():
for key2,value2 in other.items():
if key1 == key2:
new_list[key1] = value1 + value2
break
elif key2 not in new_list:
new_list.update({key2: value2})
return new_list
def __mul__(self, other):
new_list = self.copy()
for key1,value1 in self.items():
for key2,value2 in other.items():
if key1 == key2:
new_list[key1] = value1 * value2
break
elif key2 not in new_list:
new_list.update({key2: value2})
return new_list
def multiply_ingredients(ingredients: dict, k: float) -> dict:
new_ingredients = ingredients.copy()
for key,value in new_ingredients.items():
new_ingredients[key] = value * k
return new_ingredients
def add_ingredients(ingredients1: dict, ingredients2: dict) -> dict:
new_ingredients = ingredients1.copy()
for key1,value1 in ingredients1.items():
for key2,value2 in ingredients2.items():
if key1 == key2:
new_ingredients[key1] = value1 + value2
elif key2 not in new_ingredients:
new_ingredients.update({key2: value2})
return new_ingredients
soup = {'onion': 1, 'potato': 2, 'water': 2.5, 'meat': 0.5}
salad = {'potato': 2, 'meat': 0.3, 'mayonaise': 0.1, 'peas': 200}
#soup + 2 * salad # словари так не умеют :(
new_soup = ShoppingList(soup)
new_salad = ShoppingList(salad)
print(new_soup + new_salad)
print(new_soup * new_salad)
print(new_soup.add(new_salad))
print(add_ingredients(soup, salad))