دیکشنری در پایتون + تکنیک و ترفندهای متنوع
دیکشنری در پایتون، مفهومی نسبتا ساده اما با کاربرد خیلی زیاد در زبان برنامه نویسی پایتون هست که مثل فهرستی از کلیدها و مقادیر متناظر با اون عمل میکنه. یعنی شما یک مقدار (یا مقادیر) رو با استفاده از یک نام یا کلید مرتبط با اون، برای استفاده های بعدی ذخیره می کنید. برای فهم بهتر، یک دفترچه تلفن رو در نظر بگیرید که یه سری نام در اون هست و در ازای هر کدوم از این نام ها، یک شماره تماس منحصربه فرد هم وجود داره.
در ادامه به صورت قدم به قدم موضوع دیکشنری در پایتون رو بررسی میکنیم تا خیلی خوب با این مبحث آشنا شده و نحوه عملکرد و استفاده از اون رو یاد بگیرید.
1 – ایجاد دیکشنری خالی
اولین قدم در یادگیری dictionary در پایتون ساخت یک دیکشنری خالی است. ایجاد دیکشنری خالی برای زمانی هست که ما هنوز نمیدونیم چه کلیدها و مقادیری قصد داریم در اون تعریف کنیم. پس فعلا فقط یک اسم برای اون انتخاب می کنیم تا ایجاد بشه.
روش اول:
Capitals = {}
روش دوم استفاده از تابع ()dict
Capitals = dict()
به همین راحتی یک دیکشنری به نام پایتخت کشورها ساخته شد!
2 – ایجاد دیکشنری با مقدار اولیه
در ادامه حالت قبلی حالا اگر بخوایم در همون زمان ایجاد دیکشنری، اون رو مقدار دهی کنیم چه کار باید کرد؟!
روش اول : به عنوان مثال، قصد داریم یک دیکشنری به اسم “Capitals” ایجاد کنیم که قراره در اون پایتخت کشورها تعریف بشه. در واقع هدف اینه که اطلاعات مربوط به پایتخت کشورهارو با استفاده از کلیدهای مختلف مثل “آلمان”، “فرانسه” و “اسپانیا” در اون ذخیره کنیم.
پس خواهیم داشت :
capitals = { "Germany": "Berlin", "France": "Paris", "Spain": "Madrid", } country = "Germany" print(f"The capital of {country} is {capitals[country]}.")
خروجی :
The capital of Germany is Berlin.
در مثال کشور و پایتخت، “آلمان”، “فرانسه” و “اسپانیا” کلیدهای دیکشنری و مقادیر متناظر با اونها (پایتخت) به ترتیب “برلین”، “پاریس” و “مادرید” بودن و به این ترتیب دیکشنری ما با اسم “Capitals” با این مقادیر اولیه ایجاد شد که بعدا هم میتونیم داده های اون رو تغییر یا کم و زیاد کنیم.
روش دوم برای مقداردهی به دیکشنری در همون لحظه تعریف به خاطر بالا بردن حجم کد توصیه نمیشه اما به هرحال بد نیست بدونید :
Capitals[“Germany” = "Berlin"] Capitals[“France” = "Paris"] Capitals[“Spain” = "Madrid"]
روش سوم تقریبا مشابه روش اول هست اما به صورت کدنویسی افقی:
Capitals = {"Germany": "Berlin", "France": "Paris"}
3 – اضافه کردن کلید-مقدار جدید به دیکشنری موجود
معمولا احتمال اینکه اعضای یک دیکشنری به مرور زمان کم و زیاد بشن بالاست. برای همین هر زمان نیاز به تغییرات بود میتونید به شکل زیر عمل کنید. در ادامه مثالهای قبلی، حالا قصد داریم کشور ایتالیا و پایتخت اون یعنی شهر رم رو به دیکشنری Capitals اضافه کنیم :
روش ۱: استفاده از عملگر براکت []
capitals["Italy"] = "Rome"
روش ۲: استفاده از تابع ()update
capitals.update({"Italy": "Rome"})
تا اینجا دو روش برای ساخت دیکشنری خالی و سه روش برای ساخت دیکشنری با مقادیر اولیه رو بررسی کردیم. مهمه که بدونید کلیدها حتما باید یکتا باشن و نکته مثبت اینه که هر نوع داده ای رو میتونن بپذیرن.
4 – دسترسی و تغییر در عناصر دیکشنری در پایتون
یکی از ویژگیهای مهم دیکشنری در پایتون، قابلیت دسترسی سریع به مقادیر مرتبط با کلیدها و همچنین امکان اعمال تغییرات در اون هست.
برای دسترسی به مقدار متناظر با یک کلید، کافیه نام کلید رو به عنوان اندیس استفاده کنید. یعنی با قرار دادن نام کلید داخل علامت []
، میتونید مقدار اون رو برگردونید.
مثال:
capital_of_france = capitals["France"]
print(capital_of_france)
خروجی :
Paris
- تغییر مقدار
با دسترسی به مقادیر دیکشنری، میتونید این مقادیر رو تغییر هم بدید. برای این کار، کافیه مقدار جدیدی رو به اون کلید اختصاص بدید. در این صورت مقدار قبلی پاک میشه و مقدار جدید جایگزین خواهد شد. مثال:
capitals["France"] = "Abadan"
- حذف کلید-مقدار از دیکشنری
از کلیدواژه del
برای حذف مستقیم کلید و مقدار اون استفاده میشه. به این صورت :
del capitals["France"]
روش دوم حذف استفاده از ()pop
هست که مقدار متناظر با یک کلید رو حذف و برخلاف del
، اون رو برمیگردونه. به این شکل :
removed_value = capitals.pop("France") print("Removed": removed_value)
خروجی :
Removed : Paris
5 – توابع دیکشنری در پایتون
موضوع بعدی داستان دیکشنری در پایتون، مجموعه متدها یا توابعی هست که کار با دیکشنری هارو آسونتر کرده و قابلیت های مختلفی رو برای مدیریت دیکشنری ها در اختیار برنامه نویس گذاشته. در ادامه مهمترین اونهارو به همراه کاربرد براتون لیست می کنیم :
-
()keys
این متد لیستی از کلیدهای موجود در دیکشنری رو برمیگردونه.
-
()values
این تابع عکس کار تابع قبلی رو انجام میده و همونطور که از اسمش پیداست، لیستی از مقادیر متناظر با کلیدهای دیکشنری رو برمیگردونه.
-
()items
این تابع یک لیست از تاپلها (Tuple) که هرکدوم شامل یک جفت کلید و مقدار مرتبط هستن رو برمیگردونه. این تاپلها میتونن برای دسترسی به کلیدها و مقادیر به صورت همزمان استفاده بشن.
-
()get
این تابع که به شکل ([get(key[default
استفاده میشه، کارش اینه که مقدار متناظر با یک کلید رو به همراه مقدار پیشفرض در صورتی که کلید مورد نظر موجود نباشه، برگردونه. به طور مثال :
capital_of_france = capitals.get("France") print(capital_of_france)
خروجی :
Paris
مثال2:
capital_of_italy = capitals.get("Italy", "Unknown") print(capital_of_italy)
خروجی :
Unknown
-
()update
همونطور که در بخش های قبلی مبحث دیکشنری در پایتون اون رو معرفی کردیم، این تابع امکان به روزرسانی یا اضافه کردن موارد جدید به دیکشنری رو فراهم میکنه. با استفاده از این تابع کاربردی، میتونید یک دیکشنری رو با محتویات دیکشنری دیگه ای بهروز کنید یا موارد جدیدی به اون اضافه کنید.
به طور کلی این متدها امکانات مختلفی رو برای کار با دیکشنری ها فراهم میکنن و کارهایی از جمله دسترسی به کلیدها، مقادیر، جفتهای کلید و مقدار، دریافت مقدار با دسترسی ایمن، به روزرسانی و اضافه کردن موارد جدید به دیکشنری رو بسیار ساده تر کردن.
6 – دیکشنری های تودرتو در پایتون
در پایتون، دیکشنری های تودرتو (Nested Dictionaries) به شما اجازه میدن که یک دیکشنری دیگه رو یکجا به عنوان مقدار یک کلید خاص در دیکشنری اصلی قرار بدید. این قابلیت برای ایجاد یک ساختار سلسله مراتبی از دیکشنریها که هرکدوم دارای کلیدها و مقادیر مخصوص به خودشون هستن، کاملا کاربردیه…
در واقع با ساختار تودرتو، میتونید به صورت مرتبط و سازماندهی شده اطلاعات رو ذخیره کنید. مثال ببینیم :
countries = { "Iran": { "capital": "Tehran", "population": 85000000, "language": "Persian" }, "France": { "capital": "Paris", "population": 67000000, "language": "French" }, "Japan": { "capital": "Tokyo", "population": 126000000, "language": "Japanese" } } print(countries["Iran])"
خروجی :
{'capital': 'Tehran', 'population': 85000000, 'language': 'Persian'}
7 – حلقه ها در دیکشنری پایتون
حلقهها در پایتون ابزار قدرتمند و کاربردی برای پیمایش داده ها محسوب میشن. با استفاده از حلقهها، میتونید به راحتی تمام مقادیر یک دیکشنری یا اجزای اون رو به خط کنید تا عملیاتی مثل چاپ کردن، تغییر یا عملیات محاسباتی روی اونها انجام بدید.
یکی از حلقههای مهم در پایتون، حلقه for هست که با استفاده از اون میشه تمام کلیدها، مقادیر یا جفت های کلید و مقدار موجود در یک دیکشنری رو پیمایش کرد.
مثال:
countries = { "Iran": "Tehran", "France": "Paris", "Japan": "Tokyo" } for country in countries: print(country) for capital in countries.values(): print(capital)
خروجی :
Iran France Japan Tehran Paris Tokyo
در اینجا می بینید که در 3 ردیف اول کشورها یا همون کلیدها چاپ شدن و در سه ردیف دوم مقدار همون کلیدها.
8 – ادغام و به روزرسانی دیکشنری در پایتون
یکی از نکات مهمی که باید در مورد دیکشنری های پایتون بدونید، قابلیت ادغام و یا به روزرسانی محتویات هست که باعث میشه علاوه بر امکان ترکیب کردن چند دیکشنری، محتوای اونهارو در صورت نیاز با اطلاعات دیکشنری های دیگه جایگزین کرده و به روز کنید. یکی از دلایلی که پایتون به حجم کم کد و سادگی یادگیری معروف هست وجود همین ویژگی هاست.
شما با استفاده از متد ()update
،میتونید دو دیکشنری رو باهم ادغام کنید. این متد اطلاعات یک دیکشنری رو با دیکشنری دیگری که به عنوان ورودی بهش داده میشه، ترکیب میکنه و در صورت تداخل کلیدها، مقادیر جدید رو به جای مقادیر موجود در دیکشنری اولی جایگزین میکنه.
مثال:
countries1 = { "Iran": "Tehran", "France": "Paris" } countries2 = { "Japan": "Tokyo", "Germany": "Berlin" } countries1.update(countries2) print(countries1(
خروجی :
{'Iran': 'Tehran', 'France': 'Paris', 'Japan': 'Tokyo', 'Germany': 'Berlin'}
9 – کنترل تکراری نبودن کلیدها
همونطور که قبلا هم گفتیم کلیدها باید یکتا باشن تا بتونید به راحتی به مقادیر مرتبط با اونها دسترسی پیدا کنید. بنابراین اگر یک کلید با اسمی تکراری تعریف کنید، پایتون مقدار قبلی رو جایگزین مقدار جدید میکنه و در نتیجه ممکنه دیتاها از دست برن یا تغییر کنن.
این ویژگی مهم در کنترل داده ها و اطمینان از یکتایی کلیدها در دیکشنری کاربرد داره. پس بهتره مطمئن بشید که هر کلید منحصربه فرد فقط یک بار تعریف شده تا از مشکلات مرتبط با تداخل کلیدها جلوگیری و داده های شما به درستی مدیریت بشن.
10 – استفاده از دیکشنری برای تعیین وجود یک کلید
در پایتون میتونید وجود یا عدم وجود یک کلید خاص در دیکشنری رو بررسی کنید. این کار از طریق استفاده از عملگر in
انجام میشه.
در واقع زمانی که شما از in
برای بررسی وجود یک کلید در دیکشنری استفاده می کنید، پایتون بررسی میکنه که آیا اون کلید در دیکشنری وجود داره یا نه! این کار خیلی سریع انجام میشه و با گذشت زمان و بزرگ شدن حجم دیتاها، اهمیتش برای شما چندبرابر خواهد شد.
یه مثال ببینیم :
countries = { "Iran": "Tehran", "France": "Paris", "Japan": "Tokyo" } if "France" in countries: print("The key 'France' exists in the dictionary.") else: print("The key 'France' does not exist in the dictionary.")
خروجی :
The key 'France' exists in the dictionary.
عکس این موضوع یعنی برای بررسی عدم وجود یک کلید، از not in
استفاده میشه. یعنی در صورتی که کلید موردنظر در دیکشنری وجود نداشته باشه، شرط به صورت True تبدیل خواهد شد.
مثال :
countries = { "Iran": "Tehran", "France": "Paris", "Japan": "Tokyo" if "Germany" not in countries: print("The key 'Germany' does not exist in the dictionary.") else: print("The key 'Germany' exists in the dictionary.")
خروجی :
The key 'Germany' does not exist in the dictionary.
11 – تبدیل لیست به دیکشنری
تبدیل لیست به دیکشنری یکی دیگه از نکات دیکشنری در پایتون هست که با استفاده از ()zip
و تابع ()dict
یک لیست از تاپل ها به یک دیکشنری قابل تبدیل خواهد شد. این ویژگی کمک میکنه تا به راحتی بتونید اطلاعات مختلف رو به صورت دیکشنری ذخیره کنید.
مثال :
pairs = [("A", 1), ("B", 2), ("C", 3)] converted_dict = dict(pairs) print(converted_dict(
خروجی :
{'A': 1, 'B': 2, 'C': 3}
چگونه در پایتون حرفهایتر شویم؟
واقعیت اینه که دیکشنری ها در پایتون کاربردهای خیلی زیادی دارن و یکی از صدها دلیل محبوبیت پایتون محسوب میشن. به عنوان مثال از نگاه علوم داده در الگوریتمهای جستجو، فیلترینگ و مرتبسازی داده ها مورد استفاده قرار میگیرن که نشون دهنده انعطافشون هست.
نکته بعدی اینکه دیکشنری ها به عنوان آرگومان یا خروجی توابع به کار میرن. این ویژگی به برنامه نویسان کمک میکنه با استفاده از ساختار دیکشنری، اطلاعات رو به راحتی در توابع مدیریت کنن. از طرفی در دیتابیس ها، مفاهیمی مثل شناسه (ID) و مقدار متناظر با اون یا نوع داده، معمولا در قالب دیکشنری تعریف و نگهداری میشن. پس یادگیری فوت و فن دیکشنری در پایتون به صورت اصولی و استاندارد برای شما میتونه تاثیر خیلی زیادی در افزایش سرعت و کیفیت کدنویسی زبان پایتون بگذاره و هرچه به موضوعات مشابه این مسلط تر باشید، پروژه های حرفه ای تری رو هم درو خواهید کرد.
سبزلرن به عنوان یک مرجع آموزشی باسابقه و متخصص در زمینه برنامه نویسی، برای علاقه مندان به پایتون خبرهای فوق العاده مثل رایگان شدن دوره آموزش صفر تا صد پایتون رو داره که بهترین و ناب ترین فرصت برای ورود به دنیای این مار دوست داشتنی هست و اگر تا الان شروع نکردید یا فکر می کنید به اندازه کافی مسلط نیستید، پیشنهاد میکنیم مثل هزاران دانشجوی قبلی تصمیم قاطعی بگیرید و اصلا این دوره رایگان رو از دست ندید تا تفاوت و تمایز سبک آموزش سبزلرن رو خیلی خوب متوجه بشید. این قول ما به شماست.
از اینکه تا انتهای این مقاله با دقت و حوصله همراه ما بودید متشکریم.
نظری برای این مقاله ثبت نشده است