ویرگول
ورودثبت نام
داریوش مهدی پور یقینی
داریوش مهدی پور یقینی
خواندن ۷ دقیقه·۱ سال پیش

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

سلام دوستان

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

https://virgool.io/@mahdi.abbaspour.sh

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

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

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

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

شکل (12-1)
شکل (12-1)

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

شکل (12-2)
شکل (12-2)

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

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

شکل (12-3)
شکل (12-3)

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

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

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

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

شکل (12-4)
شکل (12-4)
شکل (12-5)
شکل (12-5)

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

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

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

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

شکل (12-6)
شکل (12-6)

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

شکل (12-7)
شکل (12-7)

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

شکل (12-8)
شکل (12-8)

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

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

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

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

شکل (12-9)
شکل (12-9)

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

شکل (12-10)
شکل (12-10)

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

شکل (12-11)
شکل (12-11)

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

شکل (12-12)
شکل (12-12)

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

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

12-6-1- متد Clear

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

12-6-2- متد Copy

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

شکل (12-13)
شکل (12-13)

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

12-6-3- متد FromKeys

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

شکل (12-14)
شکل (12-14)

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

شکل (12-15)
شکل (12-15)

12-6-4- متد Has_Key

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

شکل (12-16)
شکل (12-16)

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

12-6-5- متد Items

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

شکل (12-17)
شکل (12-17)

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

شکل (12-18)
شکل (12-18)

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

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

شکل (12-19)
شکل (12-19)

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

شکل (12-20)
شکل (12-20)

12-6-7- متد Get

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

شکل (12-21)
شکل (12-21)

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

12-6-8- متد SetDefault

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

شکل (12-22)
شکل (12-22)

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

شکل (12-23)
شکل (12-23)

12-6-9- متد Update

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

شکل (12-24)
شکل (12-24)

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

شکل (12-25)
شکل (12-25)


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

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