"""TelegramSpot practice answer: exact product-code lookup, without packages.""" import csv from pathlib import Path import sys def match_prices(products, requests): prices = {} for product in products: code = product["code"] prices.setdefault(code, []).append(product["price"]) results = [] for request in requests: code = request["code"] matches = prices.get(code, []) if len(matches) == 0: results.append([code, "", "NOT FOUND"]) elif len(matches) > 1: results.append([code, "", "DUPLICATE CODE"]) else: results.append([code, matches[0], "FOUND"]) return results def main(): folder = Path(__file__).resolve().parent with (folder / "products.csv").open(newline="", encoding="utf-8") as file: products = list(csv.DictReader(file)) with (folder / "requests.csv").open(newline="", encoding="utf-8") as file: requests = list(csv.DictReader(file)) writer = csv.writer(sys.stdout, lineterminator="\n") writer.writerow(["code", "price", "status"]) writer.writerows(match_prices(products, requests)) if __name__ == "__main__": main()