মূল content-এ যাও

Python for AI/Data Structures আরও গভীরে/Lesson 13

Nested Data (JSON-এর মতো data)

List-এর ভেতরে dictionary, তার ভেতরে আবার list — real API response আর dataset যেভাবে আসে। পথ ধরে data বের করা, নিরাপদে পড়া, আর flatten করা।

সময়
22 মিনিট
Exercise
1
Challenge
1
Quiz
3 প্রশ্ন

সহজ ভাষায়

Real-world data প্রায় কখনো সমতল (flat) থাকে না। একটা অর্ডারের ভেতরে customer, customer-এর ভেতরে address, অর্ডারের ভেতরে item-এর list। একে বলে nested data — ভেতরে ভেতরে সাজানো।

order
 |-- id: "ORD-1042"
 |-- customer
 |    |-- name: "Nusrat"
 |    +-- address
 |         +-- city: "Sylhet"
 +-- items: [ {...}, {...}, {...} ]

Python-এ এটা হয় dictionary আর list মিলিয়ে।

কেন দরকার?

AI Engineer-এর প্রতিদিনের কাজ:

  • LLM API response — Claude, OpenAI সবার response nested JSON।
  • Config file — model-এর settings।
  • Dataset — অনেক dataset (যেমন COCO image annotations) JSON-এ আসে।

Nested data থেকে ঠিক জিনিসটা বের করতে না পারলে এই কাজগুলো করা যাবে না।

পথ ধরে data বের করা

প্রতিটা ধাপে নিজেকে জিজ্ঞেস করো: এটা dictionary নাকি list? Dictionary হলে key দিয়ে, list হলে index দিয়ে।

main.py

Nested list-এ loop

main.py

খেয়াল করো: f-string-এর ভেতরে item['name'] লিখতে single quote ব্যবহার করেছি, কারণ বাইরের string double quote দিয়ে।

না থাকা field: নিরাপদে পড়া

Real data-তে সব field সবসময় থাকে না। সরাসরি [] দিয়ে পড়লে program ভেঙে যায়:

main.py

.get() chain করে নিরাপদে পড়া যায় — না থাকলে খালি dict ধরে নাও:

main.py

JSON: text থেকে Python, Python থেকে text

API বা file থেকে data আসে JSON text হিসেবে। Python-এর built-in json module দিয়ে রূপান্তর:

main.py
Functionকাজ
json.loads(text)JSON text → Python dict/list
json.dumps(obj)Python dict/list → JSON text

JSON আর Python dictionary দেখতে প্রায় একই, কিন্তু ছোট পার্থক্য আছে: JSON-এ true/false/null, Python-এ True/False/None।

Exercise

Exercise

অর্ডারের মোট দাম

+20 XP

একটা online অর্ডার nested dictionary হিসেবে এসেছে। প্রতিটা item-এর price × qty যোগ করে total বের করো, আর customer-এর শহর city variable-এ রাখো।

solution.py

Quiz

  1. Q1নিচের data থেকে "Python" বের করার সঠিক পথ কোনটা?
    user = {"name": "Mim", "skills": [{"name": "Python", "level": 4}]}
    
  2. Q2d = {"a": {}} হলে d.get("a", {}).get("b", 0) কী দেবে?
  3. Q3json.loads() কী করে?
0/3 answered

Challenge

Challenge

Nested record থেকে table

+50 XP

একটা API থেকে student-দের data এসেছে, কিন্তু সব student-এর সব field নেই। flatten(students) function লেখো যেটা প্রতিটা student-এর জন্য একটা flat dictionary বানিয়ে list return করে:

  • name — student-এর নাম
  • dept — info থেকে department; না থাকলে "unknown"
  • avg — scores list-এর গড়, 2 ঘর দশমিকে round; scores না থাকলে বা খালি হলে None
solution.py

বাস্তবে কোথায় ব্যবহার হয়?

একটা LLM API-র response থেকে উত্তর আর খরচ বের করা — Generative AI module-এ এটাই প্রতিদিন করবে:

main.py

আর challenge-এ যা করলে — nested record থেকে flat table — Pandas-এ ঠিক এই কাজের জন্য pd.json_normalize() আছে। Pandas module-এ দেখবো।

Interview প্রশ্ন

  • Beginner: JSON আর Python dictionary-র পার্থক্য কী?
  • Intermediate: গভীরভাবে nested data-তে কোনো key না থাকলে program crash না করে কীভাবে handle করবে?
  • Advanced: একটা nested dictionary-র সব key-path বের করার recursive function কীভাবে লিখবে? (যেমন customer.address.city)

এরপর কী?

Data বের করতে পারি। এখন সেটা সাজাতে আর খুঁজতে হবে — "সবচেয়ে বেশি score কার?", "দাম অনুযায়ী সাজাও"। পরের lesson: Sorting ও Searching।