
روز ۲۲ آموزش پایتون: لیستها و دیکشنریهای تو در تو
در برنامه نویسی واقعی، دادهها معمولاً ساده و تکبعدی نیستند. خیلی کم پیش میآید که فقط با یک لیست ساده یا یک دیکشنری تکسطحی کار کنیم. اغلب پروژهها شامل دادههایی هستند که ساختار پیچیدهتری دارند، مثل لیستی از کاربران که هر کدام اطلاعات مختلفی دارند یا دیکشنریای که داخل آن چندین لیست و دیکشنری دیگر قرار گرفته است. به همین دلیل، یادگیری لیستها و دیکشنریهای تو در تو یکی از مهمترین قدمها برای ورود به دنیای پروژههای واقعی پایتون محسوب میشود.
لیستها و دیکشنریهای تو در تو به ما این امکان را میدهند که دادههای پیچیده را بهصورت منظم و قابل مدیریت ذخیره کنیم. اگر این مفاهیم را خوب یاد بگیری، کار با فایلهای JSON، APIها، دیتابیسها و حتی فریمورکهایی مثل جنگو و FastAPI برایت بسیار سادهتر خواهد شد. در این درس سعی میکنیم این مفاهیم را با مثالهای کاملاً عملی و قابل لمس بررسی کنیم تا دقیقاً بدانی کِی و کجا باید از آنها استفاده کنی.
لیستهای تو در تو در پایتون چیستند؟
لیست تو در تو یعنی لیستی که داخل آن یک یا چند لیست دیگر قرار دارد. این ساختار معمولاً برای نمایش دادههای چندبعدی استفاده میشود، مثل جدولها، ماتریسها یا گروهبندی اطلاعات. برای مثال، اگر بخواهیم نمرات چند دانشآموز را ذخیره کنیم، میتوانیم برای هر دانشآموز یک لیست جداگانه داشته باشیم و همه آنها را داخل یک لیست اصلی قرار دهیم. این روش هم خوانا است و هم انعطافپذیری بالایی دارد.
نمونهای ساده از لیست تو در تو:
scores = [
[18, 17, 19],
[15, 16, 14],
[20, 19, 18]
]
print(scores[0])
print(scores[1][2])در این مثال، scores یک لیست اصلی است که داخل آن سه لیست دیگر قرار دارد. با استفاده از اندیسها میتوانیم به دادههای داخلی دسترسی داشته باشیم. این نوع ساختار در پروژههایی مثل تحلیل داده، بازیسازی و پردازش اطلاعات بسیار پرکاربرد است.
پیمایش لیستهای تو در تو با حلقهها
برای کار با لیستهای تو در تو، معمولاً از حلقههای تو در تو استفاده میکنیم. این روش به ما اجازه میدهد روی تمام عناصر داخلی لیست حرکت کنیم و آنها را پردازش کنیم. در پروژههای واقعی، این تکنیک برای محاسبه مجموع، میانگین یا اعمال تغییر روی دادهها بسیار استفاده میشود. اگر این بخش را خوب یاد بگیری، بسیاری از الگوریتمها برایت سادهتر میشوند.
نمونه پیمایش لیست تو در تو:
scores = [
[18, 17, 19],
[15, 16, 14],
[20, 19, 18]
]
for student_scores in scores:
for score in student_scores:
print(score)در این مثال، حلقه اول روی لیست اصلی حرکت میکند و حلقه دوم عناصر داخل هر لیست را چاپ میکند. این الگو یکی از پایهایترین مفاهیم برای کار با دادههای چندسطحی در پایتون است.
دیکشنریهای تو در تو و کاربرد آنها
دیکشنریهای تو در تو زمانی استفاده میشوند که بخواهیم دادهها را بهصورت کلید و مقدار ذخیره کنیم، اما مقدارها خودشان ساختار پیچیدهتری داشته باشند. برای مثال، اطلاعات یک کاربر میتواند شامل نام، سن و لیستی از مهارتها باشد. این نوع دادهها بهصورت طبیعی با دیکشنریهای تو در تو نمایش داده میشوند و خوانایی بسیار بالایی دارند.
نمونه دیکشنری تو در تو:
user = {
"name": "Ali",
"age": 30,
"skills": ["Python", "Django", "SQL"]
}
print(user["name"])
print(user["skills"][1])در این مثال، مقدار کلید skills خودش یک لیست است. این ترکیب دیکشنری و لیست یکی از رایجترین ساختارها در پایتون است و تقریباً در همه پروژههای حرفهای دیده میشود.
ترکیب لیست و دیکشنری در ساختارهای پیچیدهتر
در بسیاری از پروژهها، با ترکیبی از لیستها و دیکشنریهای تو در تو سروکار داریم. برای مثال، لیستی از کاربران که هر کدام یک دیکشنری شامل اطلاعات شخصی هستند. این ساختار دقیقاً مشابه دادههایی است که از APIها یا فایلهای JSON دریافت میکنیم. یادگیری این بخش تو را برای کار با دنیای واقعی آماده میکند.
نمونه ساختار ترکیبی:
users = [
{
"username": "ali",
"email": "ali@example.com",
"active": True
},
{
"username": "sara",
"email": "sara@example.com",
"active": False
}
]
for user in users:
print(user["username"], user["email"])این کد نشان میدهد چگونه میتوان بهسادگی روی دادههای پیچیده حرکت کرد و اطلاعات مورد نیاز را استخراج کرد. چنین ساختاری در سیستمهای مدیریت کاربران بسیار رایج است.
نکات مهم در کار با ساختارهای تو در تو
کار با لیستها و دیکشنریهای تو در تو قدرت زیادی به برنامهنویس میدهد، اما اگر ساختار دادهها درست طراحی نشود، کد خیلی زود پیچیده و ناخوانا میشود. همیشه سعی کن ساختار دادهها ساده، منطقی و قابل فهم باشد. نامگذاری مناسب کلیدها و متغیرها نقش مهمی در خوانایی کد دارد و باعث میشود بعداً خودت یا دیگران راحتتر با کدت کار کنند.
همچنین بهتر است قبل از استفاده از اندیس یا کلیدها، از وجود آنها مطمئن شوی تا برنامه با خطا مواجه نشود. این موضوع بهخصوص در پروژههایی که دادهها از ورودی کاربر یا فایلها میآیند اهمیت زیادی دارد. رعایت این نکات باعث میشود کدت حرفهایتر و پایدارتر باشد.
جمعبندی لیستها و دیکشنریهای تو در تو
لیستها و دیکشنریهای تو در تو یکی از مهمترین مفاهیم پایتون برای ورود به پروژههای واقعی هستند. این ساختارها به ما اجازه میدهند دادههای پیچیده را بهشکلی منظم و قابل مدیریت ذخیره کنیم. در این درس یاد گرفتیم چگونه این ساختارها را بسازیم، پیمایش کنیم و در پروژههای عملی از آنها استفاده کنیم. اگر این مبحث را خوب درک کنی، یادگیری مباحثی مثل JSON، API و حتی فریمورکهای وب برایت بسیار سادهتر خواهد شد.
تمرین پیشنهادی این است که یک برنامه ساده مدیریت کاربران بنویسی که اطلاعات هر کاربر را در قالب دیکشنری ذخیره کند و همه کاربران داخل یک لیست قرار بگیرند. این تمرین کمک میکند مفاهیم این درس کاملاً در ذهنت تثبیت شود و آماده ورود به مباحث پیشرفتهتر شوی.
