تفاوت لیست و دیکشنری در پایتون — به زبان ساده
برای استفاده از متغیرها و ساختار دادههای متفاوت یک زبان برنامه نویسی، شناخت دقیق ویژگیها و کاربردهای آن ساختار دادهها لازم است. در زبان پایتون، انواع دادههای مختلفی وجود دارد که هر کدام بسته به شرایط و نیاز برنامهنویس قابل استفاده هستند. پایتون دارای ساختارهایی همچون «لیست» (List)، «تاپل» (Tuple)، «مجموعه» (Set)، «دیکشنری» (Dictionary) و موارد دیگری است که امکانات گوناگونی دارند. دو نمونه از پرکاربردترین آنها لیست و دیکشنری است که در این مطلب به تعریف ساختار دادههای آنها میپردازیم و تفاوت لیست و دیکشنری در پایتون را مورد بررسی قرار خواهیم داد.
پایتون ساختار دادههای متفاوتی را درون ساز و کار خود پشتیبانی میکند تا مانند سایر زبانهای برنامه نویسی، باعث راحتی و کارآمدی کدنویسی شود. همه ساختارهای داده پایتون متوالی هستند و مجموعه دادهها را در قالبهای متنوعی ذخیره میکنند. لیست و دیکشنری از جمله مهمترین ساختارهای داده پایتون به حساب میآیند که ساده و در عین حال قدرتمند هستند و میتوان با استفاده از آنها طیف وسیعی از دادهها را به صورت ساختارمند ذخیره کرد.
همانطور که در تصویر بالا مشاهده میکنید، لیست و دیکشنری تا حدودی به یکدیگر شبیه هستند و فقط در برخی موارد تفاوت دارند، البته که دانستن تفاوت دیکشنری و لیست در طول مسیر یادگیری برنامهنویسی پایتون بسیار مهم است و هر یک موارد کاربرد خاص خود را دارد که در صورت عدم استفاده صحیح هر کدام در جای مناسب، برای یک پروژه کاربردی با مقیاس بزرگ، میتواند منجر به بروز اختلالاتی در کل آن پروژه شود که موجب اتلاف زمان زیادی برای اصلاح ساختار دادهها خواهد شد. حال در ادامه، هر یک از این ۲ ساختار داده و تفاوت لیست و دیکشنری در پایتون ، کاربرد و زمان درست استفاده از آنها و سایر موارد را بیان خواهیم کرد.
لیست در پایتون چیست ؟
لیست به عنوان ساختار دادهای از دنبالههای مرتب است که مولفههایی با ماهیت قابل تغییر دارد. هر آیتم یا متغیری که در داخل یک لیست قرار میگیرد، «مولفه» (عنصر | Element) نامیده میشود. همانطور که «رشتهها» (String) به عنوان کاراکتر بین علامت نقل قول (" ") تعریف میشوند، لیستها نیز در پایتون به این صورت تعریف میشوند که همه اعضاء داخل کروشه ([ ]) قرار میگیرند و با کاما ( , ) از هم جدا میشوند.
یکی از بهترین زمانهایی که میتوان از لیست استفاده کرد، هنگامی است که با متغیرهای مرتبط سر و کار داریم. از آنجایی که لیستها قابل تغییر هستند، میتوان در حین برنامه نویسی، مولفهای به آنها اضافه، کم یا بهروزرسانی کرد. در لیست پایتون به دلیل وجود «اندیس» (index) برای هر مولفه داخل آن، این عناصر به ترتیب درکنار یکدیگر قرار میگیرند و دسترسی آسان از طریق اندیسها به هریک از مولفهها امکانپذیر است. در لیست امکان تکرار مولفهها وجود دارد، زیرا اندیسهای آنها با یکدیگر متفاوت خواهند بود، بنابراین هر دو در لیست در جایگاه خود ذخیره میشوند. برای درک بهتر ساختار لیست در پایتون مثالی در ادامه آمده است.
1sample_list = [5, "python", 5, [100, 200, 300]]
2print(sample_list)
خروجی کدهای بالا به صورت زیر است.
[5, 'python', 5, [100, 200, 300]]
دیکشنری در پایتون چیست ؟
دیکشنری به عنوان ساختار داده پیشفرض پایتون برای ذخیرهسازی و جمعآوری اطلاعات در قالب جفتهای «کلید-مقدار» (Key-Value) استفاده میشود. دیکشنریها داخل آکولاد ({ }) نوشته و با کاما ( , ) از یکدیگر جدا میشوند. اگر چه کلید و مقدار با قرار گرفتن علامت دو نقطه ( : ) میان آنها از هم متمایز میشوند.
عناصر دیکشنری قابل تغییر هستند و ترتیب در آنها مهم نیست. فراموش نشود که کلمه کلید در هر عنصر باید یکتا و «حساس به حروف کوچک و بزرگ» (Case-Sensitive) باشد؛ زیرا از این طریق میتوان به سادگی در میان مولفههای دیکشنری با استفاده از کلید به مقدار داده متناظر با آن دسترسی پیدا کرد.
در مثال زیر مشاهده میشود که نوع داده مقدار هر عنصر در دیکشنری میتواند متفاوت باشد؛ مثلاً یک مقدار میتواند از نوع رشتهای، دیگری از نوع «بولی» (boolean) و مقداری دیگر از نوع عددی (صحیح یا اعشاری و سایر موارد) یا حتی خود، لیستی از متغیرهای دیگر باشد.
1sample_dict = {
2 "brand": "Ford",
3 "electric": False,
4 "year": 1964,
5 "colors": ["red", "white", "blue"]
6}
7
8print(sample_dict)
9print(sample_dict["year"])
خروجی دیکشنری بالا به صورت زیر است.
{'brand': 'Ford', 'electric': False, 'year': 1964, 'colors': ['red', 'white', 'blue']} 1964
همانطور که در مثال آورده شده است، برای دسترسی به مقدار عنصرyear ، این کلید را به صورتsample_dict["year"] مینویسیم. در کل برای دسترسی به هر مقدار از مولفهها، لازم است در دستورات مختلف، از کلید آن مقدار همراه با نام متغیر استفاده شود.
معرفی فیلم های آموزش زبان برنامه نویسی پایتون
زبان برنامه نویسی پایتون، زبانی بسیار گسترده است که در زمینههای مختلف کاربرد دارد. برای یادگیری هرچه بیشتر و بهتر پایتون و استفاده درست بر اساس نیاز و حیطهای که در آن فعالیت میکنیم، نیاز به استفاده از منابع خوب و معتبر وجود دارد. فرادرس یکی از سایتهای فارسی زبانی به حساب میآید که در آن دورههای آموزشی بسیاری در حوزه برنامه نویسی پایتون ارائه شده است. این دورهها شامل پایتون مقدماتی تا پیشرفته، مباحث شیءگرایی، نحوه استفاده از انواع کتابخانه های پایتونی در حوزههای مختلف، و آموزشهای پروژه محور و تمرینی میباشد.
- برای دسترسی به صفحه مجموعه دورههای ویدیویی آموزش پایتون فرادرس + کلیک کنید.
تفاوت لیست و دیکشنری در پایتون
میتوان پارامترهای مختلفی را برای مقایسه لیست و دیکشنری در نظر گرفت؛ از جمله مواردی که این دو در آنها باهم تفاوت دارند شامل تعریف، سینتکس، نوع اندیس، حالت دسترسی، ترتیب مولفهها، تغییرپذیری و سایر موارد است. ابتدا برای تعریف آنها باید به این مورد اشاره کرد که لیستها مجموعههایی از عناصر مختلف در کنار یکدیگر هستند، در مقابل، دیکشنری مجموعهای از مولفههای جفت شده دوتایی کلید-مقدار است. در اصول نحوی لیست، باید از کروشه ([ ]) برای محصور کردن مولفهها استفاده شود و جداسازی آنها از طریق کاما (ویرگول) انجام میشود. از طرف دیگر در دیکشنری تمام عناصر کلید و مقدار را داخل آکولاد ({ }) قرار میدهیم و برای جداسازی کلید از مقدار، باید از علامت دونقطه ( : ) استفاده کنیم.
در مورد نوع اندیسگذاری و دسترسی به عناصر در لیست، این فرایند به صورت خودکار از صفر شروع میشود و تا انتهای لیست ادامه پیدا میکند، البته که برای دسترسی به عناصر باید از همین اندیسها استفاده شود. در دیکشنری نیاز است که به ازای هر مقدار، کلیدی به عنوان اندیس آن در نظر گرفته شود، دسترسی به مقادیر مورد نظر نیز از طریق همین کلیدها انجام میشود.
تفاوت لیست و دیکشنری در پایتون به لحاظ ترتیب عناصر چیست؟
در رابطه با اهمیت ترتیب مولفهها باید گفت، این مسئله فقط در لیستها حفظ میشود. عناصر داخل لیست ماهیتی تغییرپذیر دارند، یعنی در صورت نیاز به تغییر، میتوان آنها را اصلاح کرد و این بهروزرسانی اثری بر روی اندیسها ندارد. برای ایجاد تغییرات روی مولفههای دیکشنری باید حواسمان به کلیدها باشد، زیرا کلید نمیتواند تکرار شود ولی تغییر و تکرار مقدار متناظر با آن اهمیتی ندارد.
به عنوان مثالی برای درک بهتر این موضوع، اگر فرض شود که میخواهیم اطلاعات تعدادی از دانشآموزان را در یک دیکشنری ذخیره کنیم. در این صورت، لازم است خصوصیتی مثل کد ملی را به عنوان کلید انتخاب کنیم، چون مقداری یکتا است و هیچ دو انسانی وجود ندارند که کد ملی آنها یکسان باشد. اما ممکن است دو دانشآموز همنام باشند. بنابراین ممکن است مقادیر عنصرهای دیکشنری یکسان باشند و تکرار شوند، اما کلیدها باید منحصربهفرد باشند و هیچ ۲ کلیدی نمیتوانند مثل هم باشند.
تفاوت لیست و دیکشنری در پایتون در یک نگاه
خلاصهای از مقایسه تفاوتهای لیست و دیکشنری را در جدول زیر مشاهده میکنیم.
پارامتر مقایسه | لیست | دیکشنری |
تعریف | مجموعهای از مولفههای مختلف | مجموعهای از جفتهای کلید-مقدار |
سینتکس | قرار گرفتن مولفهها میان [ ] و جداسازی عناصر از هم با کاما ( , ) | قرار گرفتن کلید-مقدارها میان { } و جداسازی کلید از مقدار با دونقطه ( : ) |
نوع اندیس | اندیسهای عدد صحیح، شروع از 0 | کلیدهای دیکشنری از هر نوع داده |
حالت دسترسی | دسترسی از طریق مقدار اندیس | دسترسی از طریق کلید |
ترتیب مولفهها | حفظ ترتیب پیشفرض مولفهها | عدم وجود تضمین برای ترتیب مولفهها |
تغییرپذیری | ماهیت تغییرپذیری دارد. | مقادیر قابل تغییر هستند، اما مولفه کلید نباید تکرار شود. |
روش ایجاد | با استفاده از متد ()list | با استفاده از متد ()dict |
متد ()sort | مرتب کردن صعودی یا نزولی مولفهها | مرتب کردن کلیدها به طور پیش فرض |
چه زمانی از دیکشنری به جای لیست استفاده می شود ؟
لیست مجموعهای از دادهها است که بهطور مرتب کنار هم قرار گرفتهاند؛ درحالیکه دیکشنری اطلاعات را در قالب جفتهای کلید-مقدار با استفاده از ساختار «جدول درهمسازی» (Hash table) ذخیره میکند. به همین دلیل، بازیابی یک مولفه در پایتون از ساختار لیست نسبت به دیکشنری پیچیدهتر است. بنابراین دیکشنری از لیست در پایتون سریعتر عمل میکند.
بهرهوری موقعی بیشتر میشود که از دیکشنری برای جستجو میان مولفهها استفاده کنیم، زیرا بسیار سریعتر از لیست است و زمان کمتری برای پیمایش روی مولفهها لازم دارد.
بهعلاوه، لیست ترتیب مولفهها را حفظ میکند درحالیکه در دیکشنری ترتیب خاصی وجود ندارد. بنابراین وقتی از ساختار داده لیست استفاده میشود که دغدغه ترتیب داشتن دادهها وجود داشته باشد. همچنین، توصیه میشود در هنگام مواجهه با مقادیر دادهای که ممکن است در آینده تغییر کنند، از ساختار داده لیست استفاده شود. به دلیل ماهیت منحصر به فردی که کلیدها در دیکشنری دارند، در صورت تغییر و اصلاح آنها در ساختار دیکشنری، احتمالاً دچار مشکل خواهید شد.
علاوه بر مواردی که گفته شد، از نظر فضای اشغال شده نیز، دیکشنریها در پایتون به فضای بسیار کمتری برای ذخیره عناصر داده در مقایسه با لیستها نیاز دارند. با نگاهی به تمام نکات بالا، کاملاً واضح است که دیکشنریها در مقایسه با لیستهای پایتون، برای استفاده بهتر و کارآمدتر هستند.
خیلی گشتم دنبالش یکی از کامل تریناش بود 👌