Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 85 additions & 0 deletions solutions/python/mecha-munch-management/1/dict_methods.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
"""Functions to manage a users shopping cart items."""


def add_item(current_cart, items_to_add):
"""Add items to shopping cart.

:param current_cart: dict - the current shopping cart.
:param items_to_add: iterable - items to add to the cart.
:return: dict - the updated user cart dictionary.
"""

for item in items_to_add:
current_cart[item] = current_cart.get(item, 0) + 1
return current_cart


def read_notes(notes):
"""Create user cart from an iterable notes entry.

:param notes: iterable of items to add to cart.
:return: dict - a user shopping cart dictionary.
"""

shopping_list = {}
for item in notes:
if item in shopping_list:
continue
shopping_list[item] = 1
return shopping_list


def update_recipes(ideas, recipe_updates):
"""Update the recipe ideas dictionary.

:param ideas: dict - The "recipe ideas" dict.
:param recipe_updates: iterable - with updates for the ideas section.
:return: dict - updated "recipe ideas" dict.
"""

ideas.update(recipe_updates)
return ideas


def sort_entries(cart):
"""Sort a users shopping cart in alphabetical order.

:param cart: dict - a users shopping cart dictionary.
:return: dict - users shopping cart sorted in alphabetical order.
"""

sorted_cart = dict(sorted(cart.items()))
return sorted_cart


def send_to_store(cart, aisle_mapping):
"""Combine users order to aisle and refrigeration information.

:param cart: dict - users shopping cart dictionary.
:param aisle_mapping: dict - aisle and refrigeration information dictionary.
:return: dict - fulfillment dictionary ready to send to store.
"""

full_info = {}
sorted_cart = dict(sorted(cart.items(), reverse=True))
sorted_mapping = dict(sorted(aisle_mapping.items(), reverse=True))
for item, amount in sorted_cart.items():
full_info[item] = [amount, aisle_mapping.get(item)[0], aisle_mapping.get(item)[1]]
return full_info


def update_store_inventory(fulfillment_cart, store_inventory):
"""Update store inventory levels with user order.

:param fulfillment cart: dict - fulfillment cart to send to store.
:param store_inventory: dict - store available inventory
:return: dict - store_inventory updated.
"""

for item, info in fulfillment_cart.items():
if store_inventory[item][0] < info[0]:
store_inventory[item][0] = "Out of Stock"
store_inventory[item][0] -= info[0]
if store_inventory[item][0] == 0:
store_inventory[item][0] = "Out of Stock"
return store_inventory