From 939efb800ccf0d9206c151fad32e192054b21913 Mon Sep 17 00:00:00 2001 From: "exercism-solutions-syncer[bot]" <211797793+exercism-solutions-syncer[bot]@users.noreply.github.com> Date: Thu, 4 Sep 2025 06:46:59 +0000 Subject: [PATCH] [Sync Iteration] python/inventory-management/2 --- .../python/inventory-management/2/dicts.py | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 solutions/python/inventory-management/2/dicts.py diff --git a/solutions/python/inventory-management/2/dicts.py b/solutions/python/inventory-management/2/dicts.py new file mode 100644 index 0000000..e34a0c0 --- /dev/null +++ b/solutions/python/inventory-management/2/dicts.py @@ -0,0 +1,72 @@ +"""Functions to keep track and alter inventory.""" + + +def create_inventory(items): + """Create a dict that tracks the amount (count) of each element on the `items` list. + + :param items: list - list of items to create an inventory from. + :return: dict - the inventory dictionary. + """ + + inventory = {} + for item in items: + inventory[item] = inventory.get(item, 0) + 1 + return inventory + + +def add_items(inventory, items): + """Add or increment items in inventory using elements from the items `list`. + + :param inventory: dict - dictionary of existing inventory. + :param items: list - list of items to update the inventory with. + :return: dict - the inventory updated with the new items. + """ + + for item in items: + inventory[item] = inventory.get(item, 0) + 1 + return inventory + + +def decrement_items(inventory, items): + """Decrement items in inventory using elements from the `items` list. + + :param inventory: dict - inventory dictionary. + :param items: list - list of items to decrement from the inventory. + :return: dict - updated inventory with items decremented. + """ + + for item in items: + if inventory.get(item, 0) == 0: + continue + else: inventory[item] = inventory.get(item, 0) - 1 + return inventory + + +def remove_item(inventory, item): + """Remove item from inventory if it matches `item` string. + + :param inventory: dict - inventory dictionary. + :param item: str - item to remove from the inventory. + :return: dict - updated inventory with item removed. Current inventory if item does not match. + """ + + if item in inventory: + inventory.pop(item) + return inventory + + +def list_inventory(inventory): + """Create a list containing only available (item_name, item_count > 0) pairs in inventory. + + :param inventory: dict - an inventory dictionary. + :return: list of tuples - list of key, value pairs from the inventory dictionary. + """ + + inv_list = [] + for item, amount in inventory.items(): + if inventory.get(item) == 0: + continue + tuple = (item, amount) + inv_list.append(tuple) + return inv_list +