طراحی ساختمان داده دیکشنری به زبان سی پلاس پلاس | دیکشنری در پایتون و ترفندهای کار با دیکشنری

بدون ديدگاه

عنوان: طراحی ساختمان داده دیکشنری به زبان سی پلاس پلاس

توضیحات:

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

در این برنامه کلید می‌تواند یکی از انواع int، float و یا string باشد. مقادیر نیز می‌توانند از هر نوعی باشند. برای این ساختمان داده، عملگرهای + و = نیز تعریف شده است که عملگر اول، دو دیکشنری را به یکدیگر متصل می‌کند و عملگر دوم، مقدار یک دیکشنری از دیکشنری دیگری گرفته می‌شود. عملیات حذف و درج کلید نیز در این برنامه برای دیکشنری در نظر گرفته شده است.

دستورات زیر بر روی دیکشنری قابل اجراست: Dictionary x; x.add(“key1”, “value1”); x.add(2, 1.5); Dictionary y = {{“key3”, 3.3}, {4, ‘D’}}; Dictionary z = x + y; z.remove(“key1”); cout << z[“key3”] << endl; cout << z.getItem(0).key << “  “ << z.getItem(0).value << endl;

 

کلمات کلیدی: سی پلاس پلاس، ساختمان داده، دیکشنری

C++, Data structure, Dictionary

دیکشنری در پایتون و ترفندهای کار با دیکشنری


دیکشنری در زبان برنامه نویسی پایتون یک نوع داده‌ای محبوب و نسبتاً پر کاربرد است. این نوع داده‌ای در اصل یک نوع لیست انجمنی (Associative) یا لیست کلید-مقدار (key-value) می‌باشد. در این مقاله به طور جامع به آموزش دیکشنری در پایتون خواهیم پرداخت.

معمولاً از دیکشنری پایتون در جاهایی استفاده می‌کنیم که نیاز داریم مقادیری را با استفاده از یک کلید مرتبط با هر کدام از آن‌ها شناسایی کنیم. این مقادیر هر چیزی می‌توانند باشند؛ برای مثال، رشته متنی، عدد، شئ و … .

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

 

دیکشنری (Dictionary) در زبان فارسی معادل فرهنگ لغت یا واژه‌نامه است. در یک کتاب فرهنگ لغت، یک کلمه با معادلش مرتبط می‌شود. این معادل می‌تواند یکی بوده یا چندین مورد باشد، اما کلمه اصلی یکی است! در اصل یک یا چند معنی معادل را به یک کلمه مرتبط کرده‌ایم.

در دیکشنری پایتون هم دقیقاً مشابه چنین کاری را انجام می‌دهیم؛ یک کلمه (که آن را به عنوان کلید می‌شناسیم) با یک مقدار (رشته متنی، عدد، رفرنس شئ و …) مرتبط خواهد شد.

معمولاً اعضای یک دیکشنری مواردی مرتبط با هم هستند و هر یک از اعضا یک خصیصه یا ویژگی از مورد اصلی را بیان می‌کنند. اما این مسئله تماماً وابسته به تعاریف و نوع برنامه نویسی شما به عنوان برنامه نویس خواهد بود و هیچ قاعده و قانون خاصی در مورد مرتبط بودن اعضای یک دیکشنری نداریم!

 

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

یک دیکشنری با علامت { شروع شده و با } خاتمه می‌یابد. اعضای کی دیکشنری به صورت کلید و مقدار (key value)  در درون آن تعریف شده و مشابه سایر ساختارهای رایج ذخیره‌سازی در پایتون، با استفاده از کاما (,) از یکدیگر جدا می‌شوند.

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

به همین سادگی توانستیم یک دیکشنری حاوی اطلاعات فردی به نام hesam را ایجاد کنیم!

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

ساخت دیکشنری با سازنده dict

برای ایجاد دیکشنری می‌توان از سازنده (Constructor) آن نیز استفاده کرد. به این منظور تابع dict() را صدا زده و تمام کلیدها و مقادیر آن‌ها را به صورت پارامترهای جداگانه به عنوان ورودی به تابع می‌دهیم.

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

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

 

کار با دیکشنری در پایتون

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

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

برای دسترسی به مقادیر (عناصر) ذخیره‌شده در دیکشنری، دو راه وجود دارد.

راه اول و ساده‌ترین راه‌حل مشابه دسترسی به خانه‌های یک لیست در پایتون است. به این صورت که با استفاده از علامت [] می‌توان به تک تک عناصر دسترسی داشت؛ با این تفاوت که به جای مقدار عددی برای اَندیس، از مقدار کلید‌ها به عنوان ایندکس استفاده خواهیم کرد.

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

خروجی قطعه کد بالا چیزی شبیه زیر خواهد شد.

 

 

آموزش لیست در پایتون و کار با List

 

 

راهکار دوم برای دسترسی به مقدار یک کلید در دیکشنری پایتون، استفاده از تابع get() روی دیکشنری است. این تابع یک ورودی می‌گیرد که همان کلید مورد نظر ماست و سپس مقدار مرتبط با کلید را بازمی‌گرداند.

 

خطای KeyError در دیکشنری پایتون

اگر در هنگام فراخوانی یک مقدار از دیکشنری، کلیدی را صدا بزنیم که وجود نداشته باشد، با خطایی از نوع KeyError مواجه خواهیم شد.

 

تغییر مقادیر دیکشنری در پایتون

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

در قطعه کد زیر، مقدار 23 را در کلید age از دیکشنری person قرار داده‌ایم.

همان‌طور که احتمالاً درست حدس زده‌اید، می‌توان برای به‌روز‌رسانی مقدار یک کلید در دیکشنری از همان مقدار یا مقدارهای دیگر درون آن دیکشنری نیز استفاده کرد.

مثلاً در مثال زیر، سن فعلی کاربر را به اندازه یک واحد افزایش می‌دهیم.

 

ترفندهای کار با دیکشنری پایتون

ترفندهای کار با دیکشنری پایتون

 

افزودن عنصر جدید به دیکشنری پایتون

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

 

حذف عناصر از دیکشنری

برای حذف یک کلید و مقدار مرتبط با آن، دو روش خواهیم داشت.

روش اول استفاده از دستور del است. در جلوی این دستور کلید مورد نظر در دیکشنری را فراخوانی می‌کنیم.

در خط هفتم می‌بینیم که کلید mobile و مقدار مربوط به آن از درون دیکشنری حذف شده است.

 

روش دوم برای حذف یک المان از دیکشنری استفاده از متد pop() در دیکشنری پایتون است. این تابع به صورت متد روی دیکشنری مورد نظر صدا زده شده و یک ورودی می‌گیرد.

ورودی آن همان مقدار کلید مورد نظر ماست که می‌خواهیم از دیکشنری حذف کنیم.

 

حذف کل دیکشنری در پایتون

گاهی لازم است تا کل دیکشنری را حذف کنیم. منظور از کل دیکشنری۷ حذف تمام کلید‌ها و مقدار‌ها و پس از آن حذف متغیر دیکشنری است.

برای این کار کافی است تا نام دیکشنری را در مقابل دستور del بنویسیم. با این کار کل دیکشنری حذف خواهد شد.

 

حذف تمام عناصر دیکشنری

اما گاهی نیاز است که صرفاً دیکشنری را خالی کنیم؛ یعنی بدون حذف خود دیکشنری، فقط کلید‌ها و مقدار‌ها را حذف کنیم. برای این کار متد clear() را روی شئ دیکشنری صدا می‌زنیم.

با صدا زدن این تابع، تمام کلیدهای موجود در دیکشنری حذف شده و در نهایت یک دیکشنری خالی خواهیم داشت.

 

قوانین تعریف کلید و مقدار در دیکشنری پایتون

کلیدهای دیکشنری در پایتون باید دو ویژگی اصلی داشته باشند.

  1. یکتا باشند (تکراری نباشند)
  2. تغییرناپذیر باشند.

مورد اول که تقریباً واضح است. در حقیقت به ازای هر کلید در دیکشنری نمی‌توان بیشتر از یک مقدار داشت. در صورتی که یک کلید دو بار در دیکشنری تعریف شود، مقدار دوم آن جایگزین اولی شده و همواره مقدار دوم را خواهیم داشت. (به نوعی تغییر مقدار صورت می‌گیرد)

در مورد دومین قانون، کلید را به عبارتی هویت مقدار (value) مرتبط با آن می‌دانند. می‌دانیم که هویت را نمی‌توان تغییر داد. بنابراین کلید‌ها در دیکشنری پایتون می‌بایست یک مقدار تغییرناپذیر باشند. در نتیجه نمی‌توان از یک متغیر به عنوان کلید استفاده کرد.

برای مقادیر متناظر با کلید‌ها در دیکشنری هیچ گونه محدودیتی نداریم. این مقادیر می‌توانند تکراری بوده یا از هر نوع داده‌ای مختلفی (نظیر رشته، عدد، شئ پایتون، شئ تعریف شده توسط کاربر و …) باشند؛ در نتیجه می‌توانند تغییرپذیر نیز باشند.
 

گرفتن ورودی در پایتون با تابع input

 

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

همان‌طور که می‌دانید، متغیرهایی که به اشیاء اشاره می‌کنند حاوی رفرنسی به آن شئ هستند. پس اگر یک دیکشنری را با استفاده از علامت تخصیص (=) به متغیر دیگری بدهیم، دیکشنری کپی نمی‌شود؛ بلکه فقط رفرنس آن، درون متغیر دوم ریخته خواهد شد. در نتیجه با تغییر دیکشنری اول، دیکشنری دوم ما نیز تغییر می‌کند.

 

برای کپی کردن دیکشنری در پایتون می‌توان از متد copy() روی شئ دیکشنری استفاده کرد.

حالا اگر دیکشنری person یا person_backup را تغییر دهیم، محتوای دیکشنری دیگر هیچ تغییری نخواهد کرد.

برای دیدن تمام متدهای دیکشنری پایتون می‌توانید به جدول انتهای این صفحه انگلیسی مراجعه کنید.

 

جمع‌بندی: دیکشنری در پایتون چیست ؟

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

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

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

Yaramoozan.ir@gmail.comتماس با ما

نوشتن دیدگاه

نشانی ایمیل شما منتشر نخواهد شد.

پنج × سه =