فصل دوازدهم آموزش پایتون مقدماتی - Dictionary یا فرهنگلغت ها (انتشار: 1402/08/04)
در دیکشنری، هر کلید با یک علامت دونقطه، از مقدار آن جدا شده و در کل، تمامی اعضا و عناصر آن توسط ویرگول از هم جدا میشوند. البته همه چیز اعم از کلید و مقدار، مابین جفتکوتیشن قرار میگیرند. همچنین برای تعریف دیکشنری خالی نیز میتوان از علامتهای { } استفادهنمود. کلیدهای دیکشنری منحصر بهفرد هستند. حال این که ممکناست مقادیر آنها نیز یکسان باشد. مقادیر میتوانند از هر نوعی باشد، در حالی که کلیدها باید از نوع دادهی تغییرناپذیری مانند رشته، عدد ویا تاپل باشند.
12-1- دسترسی به مقادیر دیکشنری
برای دسترسی به مقادیر عناصر این نوع داده، همانند شکل (12-1) میتوانید از واردنمودن مقدار کلید عنصر مدنظر در بین علامتهای براکت مربعی استفادهکنید. با اجرای این مثال در خروجی، به ترتیب مقادیر ‘Zara’ و 7 را خواهیمداشت.
همچنین اگر قصد داشتهباشیم، به عنصری مانند ‘Alice’ دسترسی داشتهباشیم که در این دیکشنری وجود ندارد، با خطایی شبیه به شکل (12-2) رو به رو خواهیمشد.
12-2- به روز رسانی دیکشنری
شما میتوانید یک دیکشنری را با اضافهکردن ورودیجدید ویا دوتاییِ کلید و مقدار، به روز کنید. همچنین همانند شکل (12-3) میتوانید اقدام به ویرایش ویا حذف یکی از آنها نمایید.
همان طوری که در این قطعه کد دیدید، هر دو دستور به یک شکل هستند. به دلیل وجود کلید ‘Age’ در دیکشنری، این دستور عمل ویرایش را روی آن اعمال خواهدکرد. این در حالی است که به دلیل عدم وجود کلید ‘School’ در دیکشنری ما، اجرای این دستور، موجب ایجاد کلید جدیدی خواهدشد.
12-3- حذف عناصر دیکشنری
شما به راحتی میتوانید با استفاده از دستور del هر عنصر دلخواهی را از دیکشنری حذفکنید. به طور کلی، امکان حذف کل محتوای یک دیکشنری نیز وجود دارد. این کار با استفاده از دستور clean انجام می شود. شکل (12-4) مثال سادهای از این مطلب را نشان میدهد. به یاد داشتهباشید که در خروجی دستور چاپ، دیکشنری ما به صورت مرتب شده بر اساس حروف الفبا ظاهر میشود.
همان طوری که از خروجی این مثال در شکل (12-5) مشخصاست، در مثال اول عنصری با کلید ‘Name’ از دیکشنری ما حذف شدهاست. همچنین مثال دوم برای حذف تمام عناصر دیکشنری به کار رفتهاست. البته در سومین مثال، به دلیل حذف این دیکشنری از حافظه، دسترسی به کلید ‘Age’ ممکننبوده و با پیغام خطا رو برو میشویم.
در مورد متد ( ) clear به صورت مجزا و در بخش مربوط به متدها بحث خواهیمکرد.
12-4- خواص کلیدهای دیکشنری
همان گونه که در مبحث قبلی به آن اشارهکردیم، بر خلاف لیست ها که مقادیر آن میتواند هر نوع دادهی استانداردی باشد، کلیدها تنها بایستی از نوع دادهی تغییرناپذیر مانند رشته، عدد ویا تاپل باشند. با این حال ذکر دو نکته ضروری است.
1) بیشتر از یک ورودی برای هر کلید مجاز نیست. به عبارت دیگر ما مجاز به استفاده از هیچ کلید تکراری نیستیم. اگر با عناصری مواجهشدیم که برای یک کلید، دو مقدار متفاوت دارند، آخرین انتساب، مورد قبول خواهدبود. برای مثال در شکل (12-6) با توجه به انتصاب دو مقدار مجزا برای کلید ‘ Name’ در خروجی اجرای قطعه کد، مقدار دوم یعنی ‘ Manni’ را خواهیمداشت.
2) کلیدها باید تغییرناپذیر باشند. به این معنی که شما میتوانید از رشته، عدد ویا تاپل استفادهکنید. همان طوری که در شکل (12-7) میبینید، استفاده از عناصری مانند [‘key’] مجاز نیست.
با اجرای این مثال با خطایی همانند شکل (12-8) مواجه خواهیمشد.
12-5- توابع داخلی دیکشنری
از آن جایی که عملکرد و نحوهی استفاده از تابع ( ) len شبیه به چیزی که در لیست و تاپل دیدید، است، از توضیح بیشتر در این دو مورد صرف نظر نموده و فقط اشاره میکنیم که در این جا ورودی آنها، دیکشنری خواهدبود.
در این قسمت اشارهای به دو تابع دیگر خواهیمداشت که علاوهبر دیکشنری، برای سایر انواع داده نیز مورد استفاده قرار میگیرند.
1) تابع ( ) str برای تبدیل انواع داده به رشته، کاربرد دارد. همان گونه که در شکل (12-9) میبینید، برای این کار کافی است، نوع دادهی مدنظر را درون پارانتز قرار داده و به عنوان ورودی تابع درنظر گیریم.
نتیجهی اجرای این قطعه کد، به شکل (12-10) خواهدبود.
2) تابع ( ) type برای برگرداندن نوع متغیر داخل پارانتز استفاده میشود. شکل (12-11) نمونهای از استفادهی این تابع را نشان میدهد.
برای چاپ خروجی این تابع از عملگرهای قالببندی رشته استفاده میشود. با اجرای این مثال، خروجی ما به صورت شکل (12-12) میشود که بیانگر نوع دیکشنری است.
12-6- متدهای کار با دیکشنری
در مبحث نهایی این فصل، به توضیح در مورد تعدادی از متدهایی خواهیمپرداخت که برای دستکاری دیکشنری استفاده میشوند.
12-6-1- متد Clear
همان طوری که در مبحث قبلی و در شکل (12-4) به آن اشارهشد، از این متد برای پاککردن تمام عناصر موجود در دیکشنری و در نتیجه تبدیل طول آن به صفر استفاده میشود.
12-6-2- متد Copy
اگر بخواهیم یک کپی از دیکشنری فعلی را با عنوان دیکشنری جدید، داشتهباشیم، همانند شکل (12-13) میتوان به راحتی از این متد استفادهنمود.
حال اگر از دستور print (dict2) استفادهکنید، خواهیددید که عناصر آن همانند عناصر dict1 است.
12-6-3- متد FromKeys
این متد میتواند به وسیله مجموعهای از دادههای یک دنباله، دیکشنریِ جدیدی را ایجاد نماید. در شکل (12-14)، دو نوع مختلف از این کاربرد را نشاندادیم.
همان طوری که در شکل (12-15) مشاهده میکنید، حاصل اجرای مثال اول این قطعه کد، یک دیکشنری با کلیدهایی از تاپل seq بوده و مقادیر آن برابر None است. در حالی که خروجی دومین مثال، کلیدها برابر مقادیر ذکرشده بوده و مقادیر همهی آنها برابر 10 است.
12-6-4- متد Has_Key
برای بررسی وجود یک عنصر خاص در دیکشنری از این متد استفاده مینماییم. روشن است که در صورت وجود، مقدار True و در غیر این صورت، مقدار False برمیگردد. در پایتون نسخه 3 این متد با دستور in جایگزین شده است. شکل (12-16) نمونهای از این کاربرد را نشان میدهد.
با اجرای این قطعه کد مشاهده میکنیم که به دلیل وجود کلید ‘ Age’ مقدار True را خواهیمداشت. همچنین عدم وجود کلید ‘Gender’ خروجی False را درپی دارد.
12-6-5- متد Items
این متد برای ما یک لیست، حاوی دوتایی کلید و مقدار را برمیگرداند. در شکل (12-17)، این مطلب را مشاهده میکنید.
خروجی اجرای این مثال، به شکل (12-18) خواهدبود.
12-6-6- متدهای Keys و Values
به وسیلهی این متدها میتوانیم به ترتیب، لیستی از کلیدها ویا مقادیر یک دیکشنری را داشتهباشیم. مثالی در مورد استفاده از این دو متد را در شکل (12-19) خواهید دید.
پس از اجرای این مثال، خروجی ما به شکل (12-20) خواهدشد.
12-6-7- متد Get
استفاده از این متد، موجب برگشت مقدار کلید خاصی، در صورت وجود، میشود. عدم وجود آن، مقدار None را در پی خواهدداشت. البته در شکل (12-21) مشاهده میکنید که، میتوان از مقدار دلخواهی به جای None استفادهکرد.
خروجی این سه دستور چاپ به ترتیب برابر 7، None و Never است.
12-6-8- متد SetDefault
تفاوت این متد با ( ) get در این است که، متد مذکور علاوه بر نمایش خروجی، درصورت عدم وجود کلید مدنظر، آن را با مقدار تعیینشده، به دیکشنری اضافه میکند. از روی شکل (12-22) بهتر متوجه این مطلب خواهیمشد.
در نهایت میبینیم که خروجی این مثال به شکل (12-23) خواهدبود.
12-6-9- متد Update
آخرین مطلب مورد بحث ما از این بخش، متدیاست که به ما اجازهی افزودن گروهیِ عناصر یک دیکشنری به دیکشنری دیگر را صادر میکند. در شکل (12-24) خواهید دید که تمامی عناصر dict2 به dict1 افزودهشده و در خروجی چاپ میگردد.
با اجرای این قطعه کد، شکل (12-25) در خروجی ظاهر میشود.
در پست بعدی به تاریخ و زمان خواهیم پرداخت. با ما همراه باشین.
نظرات خوانندگان نوشته
نظری در این مورد دارید؟ خوشحال میشیم اون رو برامون ارسال کنید.