دیکشنری در پایتون + تکنیک و ترفندهای متنوع

، مفهومی نسبتا ساده اما با کاربرد خیلی زیاد در زبان برنامه نویسی پایتون هست که مثل فهرستی از کلیدها و مقادیر متناظر با اون عمل میکنه. یعنی شما یک مقدار (یا مقادیر) رو با استفاده از یک نام یا کلید مرتبط با اون، برای استفاده های بعدی ذخیره می کنید. برای فهم بهتر، یک دفترچه تلفن رو در نظر بگیرید که یه سری نام در اون هست و در ازای هر کدوم از این نام ها، یک شماره تماس منحصربه فرد هم وجود داره.
در ادامه به صورت قدم به قدم موضوع
دیکشنری در پایتونرو بررسی میکنیم تا خیلی خوب با این مبحث آشنا شده و نحوه عملکرد و استفاده از اون رو یاد بگیرید.
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) و مقدار متناظر با اون یا نوع داده، معمولا در قالب
دیکشنریتعریف و نگهداری میشن. پس یادگیری فوت و فن
دیکشنری در پایتونبه صورت اصولی و استاندارد برای شما میتونه تاثیر خیلی زیادی در افزایش سرعت و کیفیت کدنویسی زبان پایتون بگذاره و هرچه به موضوعات مشابه این مسلط تر باشید، پروژه های حرفه ای تری رو هم درو خواهید کرد.
سبزلرن به عنوان یک مرجع آموزشی باسابقه و متخصص در زمینه برنامه نویسی، برای علاقه مندان به پایتون
دوره آموزش صفر تا صد پایتونرو داره که بهترین و ناب ترین فرصت برای ورود به دنیای این مار دوست داشتنی هست و اگر تا الان شروع نکردید یا فکر می کنید به اندازه کافی مسلط نیستید، پیشنهاد میکنیم مثل هزاران دانشجوی قبلی تصمیم قاطعی بگیرید و اصلا این دوره رو از دست ندید تا تفاوت و تمایز سبک آموزش سبزلرن رو خیلی خوب متوجه بشید. این قول ما به شماست.
از اینکه تا انتهای این مقاله با دقت و حوصله همراه ما بودید متشکریم.
مقالات مرتبط
نظرات
اولین نفری باش که برای این مقاله نظر میدی.