{ "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# import functions.lego_classes as lego_classes\n", "from functions.lego_classes import LegoItem\n", "from functions.lego_classes import LegoComponent" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[<functions.lego_classes.LegoComponent object at 0x000002720F4BF7F0>, <functions.lego_classes.LegoComponent object at 0x000002720F4BF790>]\n" ] } ], "source": [ "# Test manually creating some item and components\n", "\n", "item1 = LegoItem(1,0.10,10)\n", "item2 = LegoItem(3,0.30,30)\n", "item3 = LegoItem(2, 0.2,20)\n", "\n", "\n", "\n", "component1 = LegoComponent()\n", "# component1.add_item(item1)\n", "component2 = LegoComponent(item2) \n", "\n", "componentall = LegoComponent([component1,component2]) # This will be saved as items for some reasaon\n", "# component3 = LegoComponent(item3,component1)\n", "# component3.add(item2) # Can't really use an item twice\n", "# component3.add(component2)\n", "print(componentall.items)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "## Let's test the json stuff\n", "import json\n", "# import tkinter as tk\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# First level list handling\n", "\n", "def read_json(file_path):\n", " with open(file_path, 'r') as f:\n", " data = json.load(f)\n", " return data\n", "json_list_data = read_json('example_item_data_list.json')\n", "# that produces a list, we'd prefer a dict\n", "\n", "# Clever way to just create an item for each listed element\n", "def create_all_items(data):\n", " items = []\n", " for item_data in data:\n", " item_number = item_data.get('item_number')\n", " mass = item_data.get('mass')\n", " delivery_time = item_data.get('delivery_time')\n", " # specific_data = item_data.get('specific_data', {})\n", " item = LegoItem(item_number, mass, delivery_time)\n", " items.append(item)\n", " return items\n", "\n", "all_items = create_all_items(json_list_data) \n", "\n", "# How to get entries for a specific item\n", "def get_item_by_number(data, item_number):\n", " datasheet = [item for item in data if item['item_number' ] == item_number] \n", " return datasheet\n", "\n", "sheet1 = get_item_by_number(json_list_data, 2) # this is a list? meh\n", "\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "<class 'dict'>\n", "{'item_number': 1, 'mass': 10, 'delivery_time': 1}\n" ] } ], "source": [ "# vs first level dict handling\n", "\n", "with open('example_item_data_dict.json') as json_file:\n", " json_dict = json.load(json_file)\n", " print(type(json_dict))\n", " print(json_dict[\"1\"])\n", "\n", "sheet2_from_dict = json_dict[\"2\"]\n", "# Create an item for this:\n", "def create_item_from_sheet(dict):\n", " item_number = dict[\"item_number\"]\n", " mass = dict[\"mass\"]\n", " delivery_time =[\"delivery_time\"]\n", " item = LegoItem(item_number, mass, delivery_time)\n", " return item\n", "\n", "itemfromdict = create_item_from_sheet(sheet2_from_dict)\n", "\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.7" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "369f2c481f4da34e4445cda3fffd2e751bd1c4d706f27375911949ba6bb62e1c" } } }, "nbformat": 4, "nbformat_minor": 2 }