| import json |
| from pathlib import Path |
|
|
| DATA_DIR = Path(__file__).parent.parent / "data" |
|
|
| with open(DATA_DIR / "elements.json", "r", encoding="utf-8") as f: |
| raw_data = json.load(f)["elements"] |
|
|
|
|
| def normalize(element): |
| return { |
| "number": element["number"], |
| "symbol": element["symbol"], |
| "name": element["name"], |
| "category": element["category"], |
| "period": element["period"], |
| "group": element["group"], |
| "phase": element["phase"], |
| "atomic_mass": element["atomic_mass"], |
| "appearance": element.get("appearance"), |
| "density": element.get("density"), |
| "melt": element.get("melt"), |
| "boil": element.get("boil"), |
| "electron_configuration": element.get("electron_configuration"), |
| "shells": element.get("shells"), |
| "electronegativity": element.get("electronegativity_pauling"), |
| "discovered_by": element.get("discovered_by"), |
| "summary": element.get("summary"), |
| "image": element.get("image", {}).get("url"), |
| "xpos": element["xpos"], |
| "ypos": element["ypos"], |
| } |
|
|
|
|
| elements = [normalize(e) for e in raw_data] |
|
|
| element_lookup = { |
| e["symbol"]: e |
| for e in elements |
| } |