فصل دوازدهم آموزش پایتون مقدماتی - Dictionary یا فرهنگ‌‌لغت ها (انتشار: 1402/08/04)

در دیکشنری، هر کلید با یک علامت دونقطه، از مقدار آن جدا شده و در کل، تمامی اعضا و عناصر آن توسط ویرگول از هم جدا می‌‌شوند. البته همه چیز اعم از کلید و مقدار، مابین جفت‌‌کوتیشن قرار می‌‌گیرند. همچنین برای تعریف دیکشنری خالی نیز می‌‌توان از علامت‌‌های { } استفاده‌‌نمود. کلید‌‌های دیکشنری منحصر به‌‌فرد هستند. حال این که ممکن‌‌است مقادیر آن‌‌ها نیز یکسان باشد. مقادیر می‌‌توانند از هر نوعی باشد، در حالی که کلیدها باید از نوع داده‌‌ی تغییرناپذیری مانند رشته، عدد ویا تاپل باشند.

این چیه؟

12-1- دسترسی به مقادیر دیکشنری

برای دسترسی به مقادیر عناصر این نوع داده، همانند شکل (12-1) می‌‌توانید از وارد‌‌نمودن مقدار کلید عنصر مدنظر در بین علامت‌‌های براکت مربعی استفاده‌‌کنید. با اجرای این مثال در خروجی، به ترتیب مقادیر ‘Zara’ و 7 را خواهیم‌‌داشت.

پایتون-شکل1-12

همچنین اگر قصد داشته‌‌باشیم، به عنصری مانند ‘Alice’ دسترسی داشته‌‌باشیم که در این دیکشنری وجود ندارد، با خطایی شبیه به شکل (12-2) رو به رو خواهیم‌‌شد.

پایتون-شکل2-12

12-2- به روز رسانی دیکشنری

شما می‌‌توانید یک دیکشنری را با اضافه‌‌کردن ورودی‌‌جدید ویا دوتاییِ کلید و مقدار، به روز کنید. همچنین همانند شکل (12-3) می‌‌توانید اقدام به ویرایش ویا حذف یکی از آن‌‌ها نمایید.

پایتون-شکل3-12

همان طوری که در این قطعه کد دیدید، هر دو دستور به یک شکل هستند. به دلیل وجود کلید ‘Age’ در دیکشنری، این دستور عمل ویرایش را روی آن اعمال خواهدکرد. این در حالی است که به دلیل عدم وجود کلید ‘School’ در دیکشنری ما، اجرای این دستور، موجب ایجاد کلید جدیدی خواهدشد.

12-3- حذف عناصر دیکشنری

شما به راحتی می‌‌توانید با استفاده از دستور del هر عنصر دلخواهی را از دیکشنری حذف‌‌کنید. به طور کلی، امکان حذف کل محتوای یک دیکشنری نیز وجود دارد. این کار با استفاده از دستور clean انجام می شود. شکل (12-4) مثال ساده‌‌ای از این مطلب را نشان می‌‌دهد. به یاد داشته‌‌باشید که در خروجی دستور چاپ، دیکشنری ما به صورت مرتب شده بر اساس حروف الفبا ظاهر می‌‌شود.

همان طوری که از خروجی این مثال در شکل (12-5) مشخص‌‌است، در مثال اول عنصری با کلید ‘Name’ از دیکشنری ما حذف شده‌‌است. همچنین مثال دوم برای حذف تمام عناصر دیکشنری به کار رفته‌‌است. البته در سومین مثال، به دلیل ‌‌حذف این دیکشنری از حافظه، دسترسی به کلید ‘Age’ ممکن‌‌نبوده و با پیغام خطا رو برو می‌‌شویم.

پایتون-شکل4-12
پایتون-شکل5-12

در مورد متد ( ) clear به صورت مجزا و در بخش مربوط به متدها بحث خواهیم‌‌کرد.

12-4- خواص کلیدهای دیکشنری

همان گونه که در مبحث قبلی به آن اشاره‌‌کردیم، بر خلاف لیست ها که مقادیر آن می‌‌تواند هر نوع داده‌‌ی استانداردی باشد، کلیدها تنها بایستی از نوع داده‌‌ی تغییرناپذیر مانند رشته، عدد ویا تاپل باشند. با این حال ذکر دو نکته ضروری است.

1) بیشتر از یک ورودی برای هر کلید مجاز نیست. به عبارت دیگر ما مجاز به استفاده از هیچ کلید تکراری نیستیم. اگر با عناصری مواجه‌‌شدیم که برای یک کلید، دو مقدار متفاوت دارند، آخرین انتساب، مورد قبول خواهدبود. برای مثال در شکل (12-6) با توجه به انتصاب دو مقدار مجزا برای کلید ‘ Name’ در خروجی اجرای قطعه کد، مقدار دوم یعنی ‘ Manni’ را خواهیم‌‌داشت.

پایتون-شکل6-12

2) کلیدها باید تغییر‌‌ناپذیر باشند. به این معنی که شما می‌‌توانید از رشته، عدد ویا تاپل استفاده‌‌کنید. همان طوری که در شکل (12-7) می‌‌بینید، استفاده از عناصری مانند [‘key’] مجاز نیست.

پایتون-شکل7-12

با اجرای این مثال با خطایی همانند شکل (12-8) مواجه خواهیم‌‌شد.

پایتون-شکل8-12

12-5- توابع داخلی دیکشنری

از آن جایی که عملکرد و نحوه‌‌ی استفاده از تابع ( ) len شبیه به چیزی که در لیست‌ و تاپل دیدید، است، از توضیح بیشتر در این دو مورد صرف نظر نموده و فقط اشاره می‌‌کنیم که در این جا ورودی آن‌‌ها، دیکشنری خواهدبود.

در این قسمت اشاره‌‌ای به دو تابع دیگر خواهیم‌‌داشت که علاوه‌‌بر دیکشنری، برای سایر انواع داده نیز مورد استفاده قرار می‌‌گیرند.

1) تابع ( ) str برای تبدیل انواع داده به رشته، کاربرد دارد. همان گونه که در شکل (12-9) می‌‌بینید، برای این کار کافی است، نوع داده‌‌ی مدنظر را درون پارانتز قرار داده و به عنوان ورودی تابع درنظر گیریم.

پایتون-شکل9-12

نتیجه‌‌ی اجرای این قطعه کد، به شکل (12-10) خواهدبود.

پایتون-شکل10-12

2) تابع ( ) type برای برگرداندن نوع متغیر داخل پارانتز استفاده می‌‌شود. شکل (12-11) نمونه‌‌ای از استفاده‌‌ی این تابع را نشان می‌‌دهد.

پایتون-شکل11-12

برای چاپ خروجی این تابع از عملگرهای قالب‌‌بندی رشته استفاده می‌‌شود. با اجرای این مثال، خروجی ما به صورت شکل (12-12) می‌‌شود که بیانگر نوع دیکشنری است.

پایتون-شکل12-12

12-6- متدهای کار با دیکشنری

در مبحث نهایی این فصل، به توضیح در مورد تعدادی از متدهایی خواهیم‌‌پرداخت که برای دستکاری دیکشنری استفاده می‌‌شوند.

12-6-1- متد Clear

همان طوری که در مبحث قبلی و در شکل (12-4) به آن اشاره‌‌شد، از این متد برای پاک‌‌کردن تمام عناصر موجود در دیکشنری و در نتیجه تبدیل طول آن به صفر استفاده می‌‌شود.

12-6-2- متد Copy

اگر بخواهیم یک کپی از دیکشنری فعلی را با عنوان دیکشنری جدید، داشته‌‌باشیم، همانند شکل (12-13) می‌‌توان به راحتی از این متد استفاده‌‌نمود.

پایتون-شکل13-12

حال اگر از دستور print (dict2) استفاده‌‌کنید، خواهیددید که عناصر آن همانند عناصر dict1 است.

12-6-3- متد FromKeys

این متد می‌‌تواند به وسیله مجموعه‌‌ای از داده‌‌های یک دنباله، دیکشنریِ جدیدی را ایجاد نماید. در شکل (12-14)، دو نوع مختلف از این کاربرد را نشان‌‌دادیم.

پایتون-شکل14-12

همان طوری که در شکل (12-15) مشاهده می‌‌کنید، حاصل اجرای مثال اول این قطعه کد، یک دیکشنری با کلیدهایی از تاپل seq بوده و مقادیر آن برابر None است. در حالی که خروجی دومین مثال، کلیدها برابر مقادیر ذکرشده بوده و مقادیر همه‌‌ی آن‌‌ها برابر 10 است.

پایتون-شکل15-12

12-6-4- متد Has_Key

برای بررسی وجود یک عنصر خاص در دیکشنری از این متد استفاده می‌‌نماییم. روشن است که در صورت وجود، مقدار True و در غیر این صورت، مقدار False برمی‌‌گردد. در پایتون نسخه 3 این متد با دستور in جایگزین شده است. شکل (12-16) نمونه‌‌ای از این کاربرد را نشان می‌‌دهد.

پایتون-شکل16-12

با اجرای این قطعه کد مشاهده می‌‌کنیم که به دلیل وجود کلید ‘ Age’ مقدار True را خواهیم‌‌داشت. همچنین عدم وجود کلید ‘Gender’ خروجی False را درپی دارد.

12-6-5- متد Items

این متد برای ما یک لیست، حاوی دوتایی کلید و مقدار را برمی‌‌گرداند. در شکل (12-17)، این مطلب را مشاهده می‌‌کنید.

پایتون-شکل17-12

خروجی اجرای این مثال، به شکل (12-18) خواهدبود.

پایتون-شکل18-12

12-6-6- متدهای Keys و Values

به وسیله‌‌ی این متدها می‌‌توانیم به ترتیب، لیستی از کلیدها ویا مقادیر یک دیکشنری را داشته‌‌باشیم. مثالی در مورد استفاده از این دو متد را در شکل (12-19) خواهید دید.

پایتون-شکل19-12

پس از اجرای این مثال، خروجی ما به شکل (12-20) خواهدشد.

پایتون-شکل20-12

12-6-7- متد Get

استفاده از این متد، موجب برگشت مقدار کلید خاصی، در صورت وجود، می‌‌شود. عدم وجود آن، مقدار None را در پی خواهدداشت. البته در شکل (12-21) مشاهده می‌‌کنید که، می‌‌توان از مقدار دلخواهی به جای None استفاده‌‌کرد.

پایتون-شکل21-12

خروجی این سه دستور چاپ به ترتیب برابر 7، None و Never است.

12-6-8- متد SetDefault

تفاوت این متد با ( ) get در این است که، متد مذکور علاوه بر نمایش خروجی، درصورت عدم وجود کلید مدنظر، آن را با مقدار تعیین‌‌شده، به دیکشنری اضافه می‌‌کند. از روی شکل (12-22) بهتر متوجه این مطلب خواهیم‌‌شد.

پایتون-شکل22-12

در نهایت می‌‌بینیم که خروجی این مثال به شکل (12-23) خواهدبود.

پایتون-شکل23-12

12-6-9- متد Update

آخرین مطلب مورد بحث ما از این بخش، متدی‌‌است که به ما اجازه‌‌ی افزودن گروهیِ عناصر یک دیکشنری به دیکشنری دیگر را صادر می‌‌کند. در شکل (12-24) خواهید دید که تمامی عناصر dict2 به dict1 افزوده‌‌شده و در خروجی چاپ می‌‌گردد.

پایتون-شکل24-12

با اجرای این قطعه کد، شکل (12-25) در خروجی ظاهر می‌‌شود.

پایتون-شکل25-12

 

در پست بعدی به تاریخ و زمان خواهیم پرداخت. با ما همراه باشین.


نظرات خوانندگان نوشته


نظری در این مورد دارید؟ خوشحال می‌شیم اون رو برامون ارسال کنید.

فصل دوازدهم آموزش پایتون مقدماتی - Dictionary یا فرهنگ‌‌لغت ها

این چیه هم یه ایده است و هم یه چالش یادگیری برای ما (و البته برای هر کسی که بخواد کنارمون باشه). هدف ایده از اسمش پیداس. قراره هر تصویری دادین بگه چیه.

English


پایتون مقدماتی