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 দিয়ে।
Nested list-এ loop
খেয়াল করো: f-string-এর ভেতরে item['name'] লিখতে single quote ব্যবহার করেছি, কারণ বাইরের string double quote দিয়ে।
না থাকা field: নিরাপদে পড়া
Real data-তে সব field সবসময় থাকে না। সরাসরি [] দিয়ে পড়লে program ভেঙে যায়:
.get() chain করে নিরাপদে পড়া যায় — না থাকলে খালি dict ধরে নাও:
JSON: text থেকে Python, Python থেকে text
API বা file থেকে data আসে JSON text হিসেবে। Python-এর built-in json module দিয়ে রূপান্তর:
| 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
অর্ডারের মোট দাম
একটা online অর্ডার nested dictionary হিসেবে এসেছে। প্রতিটা item-এর price × qty যোগ করে total বের করো, আর customer-এর শহর city variable-এ রাখো।
Quiz
Challenge
Challenge
Nested record থেকে table
একটা API থেকে student-দের data এসেছে, কিন্তু সব student-এর সব field নেই। flatten(students) function লেখো যেটা প্রতিটা student-এর জন্য একটা flat dictionary বানিয়ে list return করে:
name— student-এর নামdept—infoথেকে department; না থাকলে"unknown"avg—scoreslist-এর গড়, 2 ঘর দশমিকে round; scores না থাকলে বা খালি হলেNone
বাস্তবে কোথায় ব্যবহার হয়?
একটা LLM API-র response থেকে উত্তর আর খরচ বের করা — Generative AI module-এ এটাই প্রতিদিন করবে:
আর 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।