در حال بارگزاری

آموزش دیکشنری ها (Dictionary) در پایتون (Python) + فیلم

شما اینجا هستید:
آموزش دیکشنری ها (Dictionary) در پایتون (Python) + فیلم

آموزش دیکشنری ها (Dictionary) در پایتون (Python) + فیلم

در این آموزش، از صفر تا صد و به طور کامل دیکشنری ها (Dictionary) در پایتون (Python) را آموزش خواهیم داد! و با کلی مثال و تمرین مطلب را یاد خواهید گرفت! در ضمن برای این آموزش فیلم آموزشی هم تهیه شده است!

در صورتی که به هر دلیلی نخواستید متن زیر رو بخونید، میتونید یک راست برید آخر مطلب و فیلم آموزشی رو دانلود یا مشاهده کنید!

مقدمه

یکی دیگه از ساختار داده های (Data Structure) پایتون (Python) است! سوال پیش میاد که چرا بهش میگن دیکشنری (Dictionary)؟! واقعا ربطی داره به اون معنی که در ذهن ماست؟!

جواب اینه که بله ربط داره! در دیکشنری اگر دقت کنید یک لغت وجود داره و جلوش ترجمش رو نوشته! در اینجا هم یه چیزی داریم به اسم key (به معنی کلید) یا اندیس (که درواقع حکم همون لغت رو داره!)، و یه چیزی داریم به اسم value که حکم همون معنی رو داره!

ساخت دیکشنری در پایتون (Python)

قطعه کد زیر رو در نظر بگیرید:!

a={"name":"Sajjad Rahmani","age":10}
print(type(a))

در خط اول یک دیکشنری تعریف کردیم! حالا توش چیا داره

اندیس یا key با نام name داریم! که در واقع گفتیم این در اون دیکشنری انگلیسی به فارسی که ما در ذهنمون هست حکم لغت رو داره! متناظر با همین بنده خدا، مقدارش که Sajjad Rahmani هست رو وارد کردیم!

همچنین یک اندیس یا key دیگه به اسم age (به معنی سِن) داریم که مقدار متناظرش 10 است!

تا الان به نظرم به ذهنتون رسیده که چقدر کاربرد زیادی میتونه داشته باشه! مثلاً فرض کنید نمرات دانش آموزان یک کلاس! که اندیس‌ها یا key ها میشه همون اسامی دانش آموزها! و مقادیر یا value ها میشه همون نمراتشون!

در خط دوم دیکشنری فوق هم واضحه که داریم نوع (معنی type برابر “نوع” است!) متغیر a رو پرینت می‌کنیم!

خلاصه اینکه اگر قطعه کد بالا رو اجرا کنیم، داریم!

<class 'dict'>

که میگه نوعش dict یا همون dictionary است!

راستی: همین دیکشنری رو میشه اینجوری هم نشون داد!:

a={
    "name":"Sajjad Rahmani",
    "age":10
}

یعنی python گیر نمیده که چرا اینو اینجوری نوشتیم؟! ما ممکنه یه وقتایی برای خوانایی بهتر کد، اینها رو اینجوری بنویسیم! (در آخر همین آموزش هم یه بار دیگه این نوع نوشتار رو می‌بینید!)

یک مثال دیگه رو هم در نظر بگیرید!

a={1:60,2:40,3:50}

اینجا هم مثلاً فرض کنید یک بنده خدایی میخواسته بازدید وبسایت خودش رو در طی روزهای مختلف ثبت کنه!

مثلاً روز 1 تعداد بازدید برابر 60 تا بوده! روز 2 تعداد بازدید برابر 40 تا بوده! و روز 3 تعداد بازدید برابر 50 تا بوده!

خب اینم مثال رو هم گفتیم که تاکید کنیم که هم اندیس (یا key) و هم مقدار (یا value) فرق نمیکنه که عدد باشه یا رشته (string)! همه اینا ممکن و مجاز است!

البته یکم جلوتر میگیم که value حتی میتونه چیزهای دیگه‌ای هم باشه! (جلوتر اینو می‌بینید!)

دسترسی به مولفه های یک دیکشنری (Dictionary)

قبل از اینکه اصلاً شروع کنیم به ادامه این مبحث! لطفا مطمئن باشید موارد زیر رو بلدید! اگر بلد نیستید، به مطالبی که ارجاع میدیم مراجعه کنید، اون ها رو یاد بگیرید، بعد دوباره بیاید ادامه بدید! وگرنه نمیشه فهمید! و واقعا ما هم نمی تونیم دوباره این ها رو بگیم، چون هیچ ارزش افزوده ای برای این آموزش نخواهد داشت، بلکه این موارد نکات پیش نیاز هستند!

1- اینکه بدونید اصلاً دسترسی به مولفه یعنی چی و اصلاً چجوری این کار رو میکنن! که برای این موضوع مراجعه کنید به مطلب زیر!

آموزش لیست ها (list) در پایتون (Python)

2- اینکه بدونید نحوه اندیس گذاری در پایتون چجوریه (مثلاً اینو بدونید که از صفر شروع میشه، بدونید اندیس منفی چیه و ….) و اینکه بدونید در عبارت مثل a[2:5]، پایتون (Python) خود اون 5 رو در نظر نمی‌گیره و یکی کمترش رو در نظر می‌گیره! برای این موارد مراجعه کنید به آموزش زیر! (اندیس گذاری هم در همین آموزش گقته شده):

آموزش تابع range در پایتون (python)

خب حالا که نکات بالا رو می‌دونید به مثال های زیر دقت کنید!

مثال 1: دیکشنری زیر را در نظر بگیرید!

a={"name":"Sajjad Rahmani","age":100}

برای دسترسی پیداکردن به سن این بنده خدا  (که خودمم!) داریم:!

print(a["age"])

که خروجی میده: 100 (این عدد ها رو الکی دادم که همینجوری فقط مثال داشته باشیم! وگرنه نه من سِنم 10 سال است و نه 100!!)

توجه: دیکشنری ساختار داده‌ای بدون اندیس (از نوع پیش‌فرض) است!

یعنی اون اندیس پیش فرض که می‌گفتیم صفر، یک، دو، و الی آخر…! دیگه اینجا معنی نداره! واضح هم هست چرا! چون خودش واسه خودش key یا اندیس داره بنده خدا! اگر قرار باشه از اونا هم براش تعریف کنیم، میشه همون که “آشپز که دوتا شد، آش یا شور میشه یا بی نمک!”

پس اگر بنویسید:!

a={"name":"Sajjad Rahmani","age":10}
print(a[0])

قطعا خطا دریافت می‌کنید!

اضافه کردن یک مولفه به دیکشنری (Dictionary)

فرض کنید به همون دیکشنری a میخوایم یک مولفه دیگه اضافه کنیم، که باهاش بیایم رشته (field) این سجاد رحمانی رو هم ثبت کنیم! و مثلاً فرض کنید رشته (یا field این بنده خدا IE یا مهندسی صنایع است)! پس داریم:!

a={"name":"Sajjad Rahmani","age":10}
a["field"]="IE"
print(a)

مشاهده می‌کنید که در خط دوم از قطعه کد بالا گفتیم که بیا اندیس یا key به اسم field رو برابر قرار بده با IE !

و توی خط سوم هم میگیم همون a رو مجددا چاپ کن که ببینیم چی شد! که خروجی زیر رو دریافت می‌کنیم!

{'name': 'Sajjad Rahmani', 'age': 10, 'field': 'IE'}

بروزرسانی (update) کردن مولفه در دیکشنری (Dictionary)

فرض کنید میخوایم در همون لیست a، سِن اون بنده خدا رو بجای 100 بکنیم 10! میگیم:

a={"name":"Sajjad Rahmani","age":10}
a["age"]="10"
print(a)

که خروجیش میشه:

{'name': 'Sajjad Rahmani', 'age': '10'}

دیکنشری های توی در تو (Nested Dictionaries)

این اسمش خیلی خوف و خفنه! وگرنه چیز خاصی نیست! اگر توی یک دیکشنری، یک dictionary تعریف کنیم، میشه nested dictionaries یا دیکشنری های تو در تو! مثلاً قطعه کد زیر رو در نظر بگیرید!

b={
    "St01":{"name":"Sajjad Rahmani","age":10},
    "St02":{"name":"Milad Rangi","age":23}
}

اینکه توی چند خط نوشتیم رو اول بگم که اشکال نداره و اینو قبلاً هم صحبت کردیم!

در داخل دیکشنری b، یک key یا اندیس داریم با نام St01 (منظور کسی که میخواسته این مجموعه داده رو تعریف کنه دانشجو 01 بوده! (Student01))

بعد حالا مقدار متناظرش خودش یک دیکشنری دیگست! که به این دیکشنری توی دیکشنری میگن: dictionary های تو در تو! و اون dictionary هم اسم و سن دانشجو رو ثبت کرده!

برای St02 هم به طور مشابه قابل توضیح است!

حالا به عنوان مثال فرض کنید می‌خوایم سن دانشجو 1 (St01) رو پیدا کنیم، در این صورت داریم!

a={
    "St01":{"name":"Sajjad Rahmani","age":10},
    "St02":{"name":"Milad Rangi","age":23}
}
print(a["St01"]["age"])

که خروجی آن 10 خواهد بود!

استفاده از لیست (list) به عنوان مقدار یا value یک dictionary

مقدار یک اندیس از یک دیکشنری بجز مواردی که قبلاً گفتیم، میتونه یک لیست هم باشه!

مثال:

c={
    "Day":[1,2,3],
    "Visitors":[60,40,50]
}

که مثلاً در اینجا یک اندیس یا key داریم به اسم Day (به معنی روز!) که مقدار (value) متناظرش یک لیست هست که مقادیر 1 تا 3 رو داره!

و اندیس یا key دیگه برابر Visitors (به معنی بازدیدکنندگان) است که مقدار (value) متناظرش یک لیست هست با مقادیر 60 و 40 و 50 !

در واقع اینجا مثل این میمونه که یک ستون داریم به اسم Day  (=روز) که مقادیر 1 و 2 و 3 رو داره!

و یک ستون دیگه هم که درواقع نشان دهنده تعداد بازدیدکنندگان یک وبسایت فرضی است! که مقادیرش 60 و 40 و 50 است!

بعدها در آموزش پکیج Pandas از همین dictionary استفاده می‌کنیم! و اتفاقا اونجا با همین مثال تعداد بازدیدکننده‌های یک وبسایت شروع می‌کنیم!

استفاده از تاپل (tuple) به عنوان مقدار یا value یک dictionary

از روز روشن تره که فقط کافیه بجای لیست، در مثال قبلی یک تاپل (tuple) بذاریم:!

اگر نمی دونید تاپل چیست، به مطلب زیر مراجعه کنید:!

آموزش تاپل ها (tuple) در پایتون (python)

c={
    "Day":[1,2,3],
    "Visitors":(60,40,50)
}

من بجای لیستِ بازدیدکننده ها تاپل گذاشتم! شما اگر دوست داشتید می‌تونستید دوتاش رو تاپل بذارید! و یا حتی برای Visitors نذارید و برای Day بذارید و ….!

دانلود فیلم آموزشی این مطلب

دانلود فیلم آموزشی (حجم: حدود 28 مگابایت) (مدت زمان: حدود 18 دقیقه)

– تذکر: برای دانلود فیلم بر روی لینک “دانلود فیلم آموزشی” راست کلیک و سپس گزینه Save Link As را بزنید!

مشاهده آنلاین:

آموزش های پیشنهادی از مجموعه پایتون (Python):

آموز تولید عدد تصادفی از حدود 20 توزیع

آموزش ایجاد ماتریس با پایتون

آموزش تابع eval

 

 

 

مطالب مرتبط

یادگیری پایتون برای افراد با سن کمتر، آری یا خیر؟! در این مطلب به این سوال پرتکرار که...

دستور zip(*) درپایتون (معکوس دستور zip) برای unzip کردن می‌دونیم که تابع zip میاد چند لیست/آرایه و غیره...

جزئیات نوشته
تعداد دیدگاه 0
تعداد بازدید 6.7K
تاریخ انتشار 12/04/2019
تاریخ بروزرسانی 12/04/2019
نویسنده گروه آموزشی کولاک
برای ارسال دیدگاه ابتداواردشوید