دیکشنری ها (Dictionary) یکی دیگر از انواع داده ها در پایتون هستند که به آرایه های انجمنی (Associative Array) در زبان هایی مانند جاوا و پی اچ پی شباهت دارند. در لیست ها و تاپل ها اندیس های عناصر، عددی هستند که اولین عنصر درون لیست و تاپل عدد صفر و دومین عنصر اندیس ۱ و الی آخر.

ایجاد دیکشنری

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

مقدار دهی کردن دیکشنری ها

هر عنصر درون لیست با ویرگول از عنصر بعدی جدا می شود و هر عنصر به صورت یک زوج key : value است که key نقش اندیس و value مقدار انتساب داده شده به اندیس را دارند. اندیس ها می توانند عدد  صحصیح، عدد اعشاری و یا رشته باشند و مقادریر نیز می توانند هر یک از انواع باشند. بنابراین مقادریر یک دیکشنری به طور مثال می توانند:

  • اعداد صحیح
  • اعداد ممیز شناور
  • رشته
  • لیست
  • دیکشنری
  • تاپل

دیکشنری sample_dict1 در قطعه کد ۲ دارای سه کلید (اندیس) از نوع رشته است. به اندیس ‘id’ مقدار عدد صحیح و به مابقی اندیس ها مقدار رشته انتساب داده شده است.

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

همانند لیست ها، در دیکشنری ها برای دسترسی به هر عنصر از کلید (اندیس) در براکت های باز و بسته استفاده می شود، با این تفاوت که کلید ها می توانند از نوع اعداد اعشاری یا رشته نیز باشند. با توجه به مثال قطعه کد ۲، می توانیم به صورت زیر به مقدار هر کلید دسترسی داشته باشیم.

در خط دوم قطعه کد ۳ توسط عملگر + دو رشته (مقادیر دو کلید ‘name’ و ‘family’) را به یکدیگر الحاق کردیم. مقدار کلید ‘id’ از نوع عدد صحیح است و اجرای قطعه کد چهار باعث بروز خطا می شود.

برای رفع این مشکل باید از تابع ()str برای تبدیل عدد صحیح به رشته مطابق قطعه کد ۵ استفاده کنیم.

ایجاد لیست از طریق مقدار دهی  و ایجاد کلیدها

با فرض اینکه یک دیکشنری خالی داریم می توانیم به صورت قطعه کد ۶ آنر مقدار دهی کنیم. در این حالت جفت های key : value ایجاد خواند شد.

 مثال ۱ – دو ورودی (شناسه و نام) را از کاربر دریافت کنید و بررسی کنید که آیا مقادریر ورودی درون دیکشنری sample_dict1 وجود دارند یا نه. در قطعه کد ۶ از تابع ()title برای تبدیل حرف اول رشته به حرف بزرگ استفاده شده است.

نمایش کلیدها و مقادیر درون دیکشنری

پایتون توابع ()keys و ()values را برای بدست آوردن لیستی از کلیدها و مقادیر درون دیکشنری فراهم کرده است. متغیرای sample_dict1_keys و sample_dict1_vaues از نوع لیست هستند.

همچنین تابع ()items برای بدست آوردن عناصر درون دیکشنری استفاده می شود. هر عنصر متشکل از زوج key : value است.

 مثال ۳ – یک دیکشنری خالی ایجاد کنید. زوج عناصر apple : 10 و orange : 20 را در آن وارد کنید و سپس بررسی کنید آیا strawberry در آن وجود دارد یا نه؟

دیکشنری های تو در تو

کلیدها (اندیس ها) در دیکشنری ها می توانند از انواع اعداد صحیح، اعداد اعشاری و رشته ها باشند. مقادیر این منتسب به این کلیدها نیز می توانند از هر نوعی باشند. زمانی که مقدار یک کلید، دیکشنری باشد، به این حالت دیکشنری های تو در تو گفته می شود. در قطعه کد ۱۱ دیکشنری user_information دارای ۲ کلید ‘name’ و ‘age’ است که در مقدار انتساب داده شده به کلید ‘name’ از نوع دیکشنری است. خود این دیکشنری نیز از دو کلید ‘first’ و ‘last’ تشکیل شده است.

 مثال ۴ – نام و نام خانوادگی را از دیکشنری user_information نشان دهید. برای این مورد چون نام  با کلید ‘name’ و نام خانوادگی با کلید ‘last’ در لیست درونی قرار دارند، باید از اندیس گذاری دو بعدی به صورت زیر استفاده کنید.

مثال ۵ – نام و سن را از دیشکنری نشان دهید.

تغییر مقدار هر کلید

از طریق هر کلید می توان مقدار آنرا تغییر داد. به طور مثال در دیکشنری user_information برای تغییر نام از Amir به Alireza  و تغییر سن از ۳۴ به ۴۴ باید از قطعه کد ۱۴ استفاده کرد.

مثال ۶ – دو کلید و مقدار را به دیکشنری user_information اضافه کنید. در مورد اول به لیست درونی کلید ‘nicename’ و مقدار ‘amirnami’ و به لیست بیرونی کلید ‘location’ و مقدار ‘Tehran’ را اضافه کنید.

مثال ۷ – در دیکشنری قطعه کد ۱۰ که از دو کلید ‘apple’ با مقدار ۱۰ و کلید ‘orange’ با مقدار ۲۰ تشکیل شده است، ۱۰ واحد به مقدار کلید ‘apple’ اضافه و ۱۰ واحد از کلید ‘orange’ کم کنید.