متدهای دیکشنری در پایتون روشهای گسترده و مختلفی را برای حذف، اضافه، تغییر و دسترسی به جفتهای کلید-مقدار در دیکشنریها فراهم کردهاند. با کمک این متدها میتوانیم بر روی دادههای درون دیکشنری پیمایش کنیم. متدهای دیکشنری در جستوجو بر روی دادهها، پیداکردن مقادیر پیشفرض تعیین شده یا ادغام دیکشنریها با همدیگر نیز کاربرد دارند. با تسلط کامل به این متدها و توابع، توسعهدهندگان میتوانند کدهای واضح، گویا و کارآمدی را با بهرهمندی از حداکثر توان نوع داده دیکشنری در پایتون به وجود بیاورند.
در این مطلب از مجله فرادرس نگاه کامل و جامعی به انواع متدها و توابع درونی پایتون برای اجرای عملیات متنوع بر روی دیکشنریها میکنیم. در ابتدا به صورت کلی بر روی لیست کامل متدهای دیکشنری در پایتون نگاه کردهایم. سپس در ادامه هر متد را به صورت جداگانه مورد بررسی قرار میدهیم. در نهایت، عملکرد دقیق هر متد، سینتکس مربوط به آنها و پارامترهای ورودی و خروجی را همراه با مثالهای کدنویسی شدهای برای هر کدام به صورت جداگانه ارائه دادهایم.
متدهای دیکشنری در پایتون چه هستند؟
دیکشنریهای پایتون، نمونهای از کلاسِ «درونیِ» (Built-In)
در پایتون هستند. این اشیا برای کار به متدهای زیادی دسترسی دارند. در فهرست زیر، مهمترین گزینههای موجود در متدهایهای دیکشنری را همراه با توضیح مختصری برای هرکدام معرفی کردهایم.
: همه عناصر دیکشنری
را حذف میکند.
: کپی سطحی از دیکشنری
ایجاد کرده و برمیگرداند.
: این متد، دیکشنری جدیدی ایجاد میکند. متد
کلیدها را از روی توالی مشخص شدهای -مانند لیست- و مجموعه مقادیری را از مقادیر تعیین شده انتخاب میکند. البته اگر مقدار خاصی ارائه نشده باشد به صورت پیشفرض به ازای Value مربوط به هر کلید، مقدار None تنظیم میشود.
: متد
یکی از متدهای دیکشنری در پایتون است که مقدار مربوط به هر کلید مشخص شده را از دیکشنری
برمیگرداند.
: اگر کلید داده شده در دیکشنری
موجود باشد مقدار
و در غیر این صورت مقدار
برمیگرداند. البته استفاده از این متد، در حال حاضر مرسوم نیست که در ادامه به صورت کامل توضیح دادهایم.
: لیستی از عناصر دیکشنری
را به صورت تاپلهای حاوی جفتهای کلید و مقدار برمیگرداند.
: کلیدهای دیکشنری
را جمع کرده و به صورت عناصر درون لیست پایتونی برمیگرداند.
: عنصر مربوط به کلید مشخص شده را از دیکشنری حذف کرده و برمیگرداند.
: این متد، جفت کلید و مقدار دلخواه را از دیکشنری حذف کرده و برمیگرداند.
: این متد، شبیه به متد
است. اما اگر کلید از قبل در دیکشنری
موجود نباشد، مقدار کلید را به صورت
تنظیم میکند.
: جفتهای کلید و مقدار دیکشنری
را به دیکشنری
اضافه میکند.
: لیستی از مقادیر درون دیکشنری را برمیگرداند.
درباره آموزش پایتون و تقویت مهارتهای کدنویسی در بخش بعد چند فیلم خوب را معرفی کردهایم.
چگونه مهارت برنامه نویسی خود را در پایتون افزایش دهیم؟
به عنوان چند مورد از مهمترین چالشهای موجود در امر آموزش، میتوان از محدودیت زمانی، هزینه و کیفیت نام برد. یکی از بهترین راهها برای غلبه بر این محدودیتها استفاده از فیلمهای آموزشی موسسات معتبر و آنلاین است. وبسایت آموزشی فرادرس به عنوان قویترین و بزرگترین وبسایت آموزشی فارسی تقریبا در هر زمینهای از جمله زبانهای برنامهنویسی نیز فیلمهای آموزشی مناسبی تهیه کرده است. پایتون هم به عنوان یکی از زبانهای بسیار قدرتمند و پرطرفدار دارای فیلمهای آموزشی بسیار زیادی است.
با تماشای این فیلمهای آموزشی هزینه مقرون بهصرفه، زمان تقریبا آزاد و هماهنگ با دانشجو و کیفیت خوب در آموزشها را تجربه میکنید. سایت فرادرس فیلمهای بسیار خوبی با کیفیت عالی در روش آموزش و متناسب با همه سطوح دانش را برای دانشجویان فراهم کرده است.
این فیلمهای آموزشی با دقت و حساسیت بالایی تولید شدهاند. در صورتی که علاقهمند به افزایش مهارت خود در زبان برنامهنویسی پایتون هستید، دورههای معرفی شده در زیر گزینههای خوبی برای شروع هستند.
- فیلم آموزش برنامه نویسی تابعی در پایتون فرادرس
- فیلم آموزش برنامه نویسی شی گرا در پایتون فرادرس
- فیلم آموزش برنامه نویسی ترفندهای پیشرفته پایتون در فرادرس
- فیلم آموزش تجزیه و تحلیل و آماده سازی داده ها با پایتون در فرادرس
در ادامه به بررسی هر کدام از متدهای فهرست شده در بخش قبل پرداختهایم.
روش کار متدهای دیکشنری در پایتون
در این بخش از مطلب، همه متدهایی که در قسمت قبل معرفی شدهاند را با ذکر مثالهای کدنویسی شده توضیح دادهایم.
متد clear
متد
در پایتون یکی از متدهای دیکشنری است که همه آیتمهای درون دیکشنری را حذف کرده و داخل دیکشنری را پاک میکند. اسم متدها در پایتون مطابق با رفتار آنها تعیین میشود که در این مورد هم میتوان این مطابقت را به وضوح دید. متد
هیچ مقداری برنمیگرداند، بلکه فقط تغییراتی در دیکشنری اصلی ایجاد میکند.
سینتکس متد
شکل پایه سینتکس این متد، پایتونی برای کار با دیکشنری با نام فرضی
به صورت نمایش داده شده در کادر زیر است.
dict.clear()
پارامترهای دریافتی و مقدارهای برگشتی
این متد، هیچ پارامتری به عنوان داده ورودی دریافت نمیکند. مقدار برگشت داده شده توسط متد
از دیکشنری برابر با None است.
روش استفاده از متد clear در پایتون
در این بخش سه مثال ساده را درباره عملکرد متد
نمایش دادهایم.
مثال اول
در این مثال با استفاده از متد
همه عناصر درون دیکشنری را حذف میکنیم.
dict1 = {'a': 1, 'b': 2, 'c': 3}
dict1.clear()
print(dict1) # Output: {}
خروجی کد بالا فقط یک جفت آکولاد خالی
است.
مثال دوم
اگر متد
را بر روی دیکشنری خالی فراخوانی کنیم، در نتیجه این متد، همان دیکشنری خالی را برمیگرداند.
dict2 = {}
dict2.clear()
print(dict2) # Output: {}
خروجی کد بالا هم فقط یک جفت آکولاد خالی
است.
مثال سوم
متد
در خروجی هیچ مقدار مشخصی برنمیگرداند. تنهای مقدار برگشت داده شده توسط این متد، برابر با
است.
dict3 = {'x': 10, 'y': 20, 'z': 30}
result = dict3.clear()
print(result) # Output: None
خروجی کد بالا بعد از اجرای برنامه برابر با
است.
متد copy
متد
، یکی از توابع پایتون درونی برای کار با دیکشنریها است. با کمک این متد، کپی سطحی از روی دیکشنری اصلی ساخته شده و در خروجی برگردانده میشود. به این معنی که با استفاده از متد
میتوانیم دیکشنری جدیدی با همان جفتهای کلید-مقدار موجود در دیکشنری اصلی، ایجاد کنیم.
هیچ کدام از تغییراتی که بر دیکشنری کپی شده اعمال شوند بر روی دیکشنری اصلی مشاهده نخواهند شد. اما تغییرات در اشیا تودرتوی تغییرپذیر موجود در دیکشنری در نسخه کپی هم منعکس میشود. از این تابع برای ساخت نسخههای تکراری از دیکشنری استفاده میشود. اما این نسخههای تکراری هیچ کدام ارتباطی با نسخه اصلی نخواهند داشت.
سینتکس متد
شکل پایه سینتکس متد
برای کار با دیکشنری فرضی
به صورت نمایش داده شده در پایین است.
dict.copy()
پارامترهای دریافتی و مقدارهای برگشتی
این متد، هیچ پارامتری را به عنوان داده ورودی دریافت نمیکند. مقدار برگشت داده شده توسط متد
برابر با شیء جدیدی از کلاس دیکشنری است. این اشیا را با متد سازنده
هم میتوان تعریف کرد.
روش استفاده از متد copy در پایتون
همانطور که اشاره شد، با استفاده از متد
در پایتون، نسخه کپی شده سطحی از روی دیکشنری اصلی ایجاد میکنیم. یعنی دیکشنری جدیدی با همان کلید و مقدارهای موجود در دیکشنری اصلی ساخته خواهد شد.
original_dict = {'a': 1, 'b': 2}
copied_dict = original_dict.copy()
print(copied_dict)
با اجرای کد بالا دیکشنری
در کنسول خروجی به کاربر نمایش داده میشود.
متد fromkeys
متد
یکی از متدهای دیکشنری در پایتون است که برای ساخت دیکشنری جدید استفاده میشود. با کمک این متد، کلیدهای دیکشنری جدید از طریق شیء پیمایشپذیری مانند لیست، انتخاب شده و مقادیر این کلیدها با کمک مجموعه داده ارائه شده به متد تامین میشود. اگر چیزی برای مقداردهی
-های دیکشنری به متد ارائه نشده بود، به صورت پیشفرض مقدار «تهی» (None) به عنوان مقدار Value به کلیدها تخصیص داده میشود.
سینتکس متد
شکل پایه سینتکس متد پایتونی
برای کار با دیکشنری با نام فرضی
به صورت نمایش داده شده در پایین است.
dict.fromkeys(sequence, [value])
پارامترهای دریافتی و مقدارهای برگشتی
همینطور که در سینتکس بالا مشاهده میکنید، این متد، ۲ پارامتر به عنوان پارامتر ورودی دریافت میکند که در ادامه معرفی کردهایم. قابل ذکر است که متد
مقدار خاصی را نیز به عنوان داده خروجی برمیگرداند.
ورودی: متد
دو پارامتر اصلی دریافت میکند. هر دوی این پارامترها را با توضیحات مربوطه در پایین فهرست کردهایم.
: این پارامتر، نمایانگر همان شیء پیمایشپذیری است که برای ساخت دیکشنری جدید استفاده میشود. از عناصر موجود در این شیء پیمایشپذیر به عنوان کلیدهای دیکشنری جدید استفاده میشود. وجود این پارامتر، اجباری است.
: این پارامتر، مقادیری را فراهم میکند که باید به کلیدهای دیکشنری جدید ساخته شده اختصاص دهیم. اگر پارامتر
به متد ارائه نشده باشد، به صورت پیشفرض به همه کلیدها مقدار None اختصاص داده میشود. وجود این پارامتر، در متد اختیاری است.
خروجی: متد
در نهایت دیکشنری جدیدی با کلیدهای فراهم شده همراه با مجموعه مقدار مشخص شده تولید کرده و در خروجی برمیگرداند.
روش استفاده از متد fromkeys در پایتون
در کد پایین، با استفاده از متد
دیکشنری جدیدی را با استفاده از کلید و مقدار مشخص شده ایجاد میکنیم.
new_dict = dict.fromkeys(['a', 'b', 'c'], 0)
print(new_dict)
با اجرای کد بالا، دیکشنری
تولید شده و از برنامه به خارج برمیگردد.
متد get
متد
، یکی از متدهای دیکشنری در پایتون است که برای بدست آوردن مقدار مربوط به کلید مشخص شده در دیکشنری بهکار برده میشود. اگر کلید پیدا نشود بهجای اینکه خطای استثنای
را به کاربر نمایش دهد، مقداری که به عنوان پیشفرض برایش مشخص شده برمیگرداند.
سینتکس متد
شکل پایه سینتکس متد
برای کار با دیکشنری فرضی
به صورت نمایش داده شده در پایین است.
dict.get(key, default)
پارامترهای دریافتی و مقدارهای برگشتی
ورودی: متد
دو پارامتر اصلی دریافت میکند. هر دوی این پارامترها را با توضیحات مربوطه در ادامه فهرست کردهایم.
: این پارامتر، کلیدی را مشخص میکند که در دیکشنری باید جستوجو شود.
: این پارامتر، مقداری را مشخص میکند که در صورت یافته نشدن کلید
باید به کاربر نمایش داده شود. در صورتی که برای این پارامتر، مقداری مشخص نشده باشد به صورت پیشفرض مقدار None را نمایش میدهد. وجود این پارامتر، اختیاری است.
خروجی: از آنجا که این متد، مقدار مربوط به کلید مشخص شده را برمیگرداند، میتواند هر نوع دادهای را در خروجی برگرداند.
روش استفاده از متد get در پایتون
در این بخش برای نمایش روش کار متد
سه مثال مختلف را پیادهسازی کردهایم.
مثال اول
در این مثال با استفاده از متد
مقدار مربوط به کلید مشخص شده را از درون دیکشنری به بیرون برمیگردانیم. اما در صورت پیدا نشدن کلید مورد نظر در دیکشنری، مقدار تعیین شده به عنوان پیشفرض به خروجی برگردانده میشود.
employee = {'name': 'John Doe', 'age': 30}
print(employee.get('name')) # Output: John Doe
print(employee.get('salary', 0)) # Output: 0
مثال دوم
در زمانی که کلیدی را در دیکشنری فراخوانی میکنیم که شاید وجود نداشته باشد، با استفاده از متد
میتوان از بروز خطای مربوط به
جلوگیری کرد.
student = {'name': 'Alice', 'grade': 'A'}
print(student.get('grade')) # Output: A
print(student.get('address', 'Unknown')) # Output: Unknown
مثال سوم
متد
مقدار پیشفرضی را هم به عنوان پارامتر دوم میپذیرد. در صورت پیدا نشدن کلید ارائه شده به متد در دیکشنری، همان مقدار پیشفرض به کاربر نمایش داده میشود.
colors = {'red': '#FF0000', 'blue': '#0000FF'}
print(colors.get('green', 'Key not found')) # Output: Key not found
print(colors.get('red', 'Key not found')) # Output: #FF0000
متد has_key
متد درونی
در پایتون برای تشخیص وجود داشتن کلید خاصی در دیکشنری بهکار برده میشود. در صورتی که کلید مشخص شده در دیکشنری وجود داشت، توسط تابع مقدار
و در غیر این صورت مقدار
به برنامه برگردانده میشود.
دیکشنری پایتون، کلکسیونی از کلیدها و مقدارها است. بعضی وقتها لازم است که وجود داشتن یا نداشتن کلید خاصی را در دیکشنری بررسی کنیم. برای انجام این وظیفه از متد
استفاده میکنیم.
توجه: متد
فقط در پایتون نسخه ۲ قابل استفاده است. این متد، در پایتون۳ و بالاتر از رده خارج شده است. در این نسخهها از پایتون، برای بررسی وجود داشتن داده خاصی در ساختارهای ذخیره داده از عملگر
استفاده میکنیم.
سینتکس متد
شکل پایه سینتکس این متد، پایتونی برای کار با دیکشنری با نام فرضی
به صورت زیر است.
dict.has_key(key)
پارامترهای دریافتی و مقدارهای برگشتی
پارامتر
که در سینتکس بالا مشاهده میکنیم، همان کلیدی است که باید در دیکشنری مورد جستوجو قرار بگیرد. این متد، به عنوان مقدار برگشتی دادهای از نوع Boolean برمیگرداند. در صورتی که کلید مورد نظر در دیکشنری وجود داشته باشد مقدار
و در غیر این صورت مقدار
به بیرون از متد برگشت داده میشود.
روش استفاده از متد has_key در پایتون
در ادامه برای نمایش روش کار این متد، سه مثال مختلف را پیادهسازی کردهایم.
مثال اول
اگر کلیدی که به عنوان آرگومان به متد ارسال شده بود در دیکشنری وجود داشت، متد
، مقدار برابر با
و در غیر این صورت مقدار
را برمیگرداند. در کد زیر از متد
بر روی دیکشنری فرضی
استفاده کردهایم. در دیکشنری دو کلید با مقدار
و
وجود دارند. برای نمایش مثال، کلمه
را به عنوان آرگومان به تابع
ارسال کردهایم.
# creating a dictionary
dict = {'Name': 'Zara', 'Age': 7}
# returning the boolean value
print "Value : %s" % dict.has_key('Age')
وقتی که برنامه بالا اجرا شود، نتیجه زیر را بر روی کنسول پایتون مشاهده میکنیم.
مثال دوم
اگر کلیدی که به عنوان آرگومان به متد ارسال شده بود در دیکشنری وجود نداشت، این متد، به عنوان خروجی مقدار
را برمیگرداند.
در دیکشنری فرضی
که در مثال پایین ایجاد شده، دو کلید با مقدار
و
وجود دارند. در این دفعه، برای نمایش مثال، کلمه
را به عنوان آرگومان به تابع
ارسال کردهایم، با علم به این موضوع که کلمه مورد نظر در کلیدهای دیکشنری موجود نیست.
# creating a dictionary
dict = {'Name': 'Zara', 'Age': 7}
# printing the result
print "Value : %s" % dict.has_key('Sex')
وقتی که برنامه بالا اجرا شود، نتیجه زیر را بر روی کنسول زبان برنامه نویسی پایتون مشاهده میکنیم.
مثال سوم
متد
در پایتون۳ منسوخ شده است. بنابراین برای بررسی وجود داشتن کلید خاصی در دیکشنری باید از عملگر منطقی
استفاده کنیم. این عملگرهم در صورت وجود کلید در دیکشنری مقدار Boolean برابر با
و در غیر این صورت مقدار
را برمیگرداند.
dict_1 = {6: "Six", 7: "Seven", 8: "Eight"}
print("The dictionary is {}".format(dict_1))
# Returns True if the key is present in the dictionary
if 7 in dict_1:
print(dict_1[7])
else:
print("{} is not present".format(7))
# Returns False if the key is not present in the dictionary
if 12 in dict_1.keys():
print(dict_1[12])
else:
print("{} is not present".format(12))
وقتی که برنامه بالا اجرا شود، نتیجه زیر را بر روی کنسول پایتون مشاهده میکنیم.
متد items
متد
در پایتون، یکی از متدهای دیکشنری در پایتون است. با کمک این متد، لیستی از عناصر کلید-مقدار درون دیکشنری را به صورت تاپل به خروجی برمیگردانیم. یعنی لیست پایتونی از تاپلها که در هر تاپل دو عنصر کلید و مقدار متناظر با آن در دیکشنری قرار دارند. از این متد، برای دسترسی به همه جفتهای کلید-مقدار درون دیکشنری به شکل تاپل استفاده میشود.
سینتکس متد
شکل پایه سینتکس این متد پایتونی برای کار با دیکشنری با نام فرضی
به صورت نمایش داده شده در پایین است.
dict.items()
پارامترهای دریافتی و مقدارهای برگشتی
متد
هیچ پارامتری را به عنوان داده ورودی دریافت نمیکند اما شیء نمایی از تاپلهای کلید مقدار
درون دیکشنری را در خروجی به کاربر برمیگرداند.
روش استفاده از متد items در پایتون
در ادامه برای نمایش روش کار این متد، سه مثال مختلف را پیادهسازی کردهایم.
مثال اول
متد
در پایتون، شیء نمایی را به خروجی برمیگرداند. در این شیء، لیستی از جفتهای کلید و مقدار محصور در تاپل قرار دارند.
dict = {'a': 1, 'b': 2, 'c': 3}
print(list(dict.items()))
# Output: [('a', 1), ('b', 2), ('c', 3)]
مثال دوم
این متد، کمک میکند که بر روی جفتهای کلید-مقدار درون دیکشنری با استفاده از حلقههای مخصوص برنامه نویسی پیمایش کنیم.
dict = {'apple': 'red', 'banana': 'yellow', 'grape': 'purple'}
for key, value in dict.items():
print(f'The color of {key} is {value}')
بر اثر اجرای کد بالا خروجی زیر در کنسول پایتون به کاربر نمایش داده میشود.
مثال سوم
میتوانیم از متد
همراه با تکنیک تعریف لیست List Comprehension برای کار با دادههای درون دیکشنری هم استفاده کنیم. در این صورت به عنوان مثال میتوان لیست جدیدی از دیکشنریهای پایتونی قالببندی شده ایجاد کرد.
dict = {'John': 25, 'Alice': 30, 'Bob': 28}
formatted_list = [f'{name} is {age} years old' for name, age in dict.items()]
print(formatted_list)
# Output: ['John is 25 years old', 'Alice is 30 years old', 'Bob is 28 years old']
متد keys
متد
در دیکشنریهای پاتون برای برگرداندن نمایشی از همه کلیدهای موجود در دیکشنری استفاده میشود. با کمک این متد، همه کلیدهای موجود در دیکشنری شناسایی شده و در لیستی کنار یکدیگر به ترتیب چیده میشوند. از این شی نمایشی میتوان بعدا برای پیمایش بر روی کلیدهای دیکشنری، استفاده کرد. یا حتی با کمک این شی میتوان کلید خاصی را شناسایی و از درون دیکشنری فراخوانی کرد. در نهایت میتوان این شیء نمایی را به لیستی از کلیدهای دیکشنری هم تبدیل کرد.
سینتکس متد
شکل پایه سینتکس متد
برای کار با دیکشنری با نام فرضی
به صورت نمایش داده شده در پایین است.
dict.keys()
پارامترهای دریافتی و مقدارهای برگشتی
متد
هیچ پارامتری را به عنوان داده ورودی دریافت نمیکند. اما در خروجی «شیء نمایی» (The View Object) از همه کلیدهای دیکشنری را برمیگرداند.
روش استفاده از متد keys در پایتون
دیکشنریهای پایتون شباهت بسیار زیادی با JSON-ها دارند. اما دارای تفاوتهای اساسی نیز هستند. با مطالعه مطالب JSON برای پایتون، راهنمایی برای مبتدیها و کار با انواع فرمت ها در پایتون (JSON ،CSV و XML) به زبان ساده در مجله فرادرس، اطلاعات بسیار خوبی درباره فرمت ذخیره داده JSON پیدا میکنید. همچنین نسبت به مزایایی که این فرمت برای نقل و انتقال دادهها در بستر اینترنت دارد و روش انجام این کار در حد بسیار خوبی آشنا میشوید.
در ادامه برای نمایش روش کار متد
سه مثال مختلف را پیادهسازی کردهایم.
مثال اول
متد
در پایتو شیء نمایی را به خروجی برمیگرداند. در این شیء نمایی لیستی از همه کلیدهای موجود در دیکشنری قرار دارد.
# Using keys() method
my_dict = {'a': 1, 'b': 2, 'c': 3}
keys = my_dict.keys()
print(keys)
خروجی حاصل از اجرای کد بالا به صورت
به کاربر نمایش داده میشود.
مثال دوم
شی نمایی ساختاری پویا دارد. یعنی تمام تغییراتی که در دیکشنری ایجاد میشود را منعکس میکند.
# Modifying the dictionary and checking keys()
my_dict = {'a': 1, 'b': 2, 'c': 3}
keys = my_dict.keys()
my_dict['d'] = 4
print(keys)
خروجی حاصل از اجرای کد بالا به شکل
نمایش داده میشود.
مثال سوم
متد
به عنوان خروجی، نوع داده مرسوم لیست را برنمیگرداند. اما شیء نمایی که توسط این متد، برگردانده شده را به سادگی میتوان با بهکار بردن تابع
به لیست معمولی تبدیل کرد.
# Converting keys view object to list
my_dict = {'a': 1, 'b': 2, 'c': 3}
keys = list(my_dict.keys())
print(keys)
با اجرای کد بالا، لیست
به عنوان خروجی در کنسول پایتون نمایش داده میشود.
متد pop
متد
، یکی دیگر از متدهای دیکشنری در پایتون است. این متد، عنصر خاصی را که توسط کلید مشخص شده از دیکشنری پاک کرده و در خروجی برمیگرداند. اگر کلیدی که به این متد، ارسال شده در دیکشنری پیدا نشود، میتواند مقدار پیشفرضی را که به عنوان آرگومان دوم دریافت کرده در خروجی نمایش دهد. اما اگر کلید مشخص شده، در دیکشنری پیدا نشد و به همچنین مقداری هم به عنوان پیشفرض تعیین نشده بود، منجر به بروز خطای استثنای
در برنامه میشود.
سینتکس متد
شکل پایه سینتکس متد پایتونی
برای کار با دیکشنری با نام فرضی
به صورت نمایش داده شده در پایین است.
dictionary.pop(key[, default])
پارامترهای دریافتی و مقدارهای برگشتی
متد
دو پارامتر اصلی دریافت میکند. هر دوی این پارامترها را با توضیحات مربوطه در ادامه فهرست کردهایم.
: این پارامتر، کلیدی را مشخص میکند که در دیکشنری باید جستوجو شود. بعد از پیدا کردن این کلید، در ابتدا کلید و مقدارش از دیکشنری حذف میشوند و سپس مقدار مربوطه در خروجی برگردانده میشود.
: این پارامتر، مقداری را به صورت پیشفرض، مشخص میکند. این مقدار پیشفرض در صورت یافته نشدن کلید
باید به عنوان مقدار جواب به خروجی برگردانده شود. در صورتی که برای این پارامتر، مقداری مشخص نشده باشد باعث ایجاد خطای استثنای
میشود. وجود این پارامتر، اختیاری است.
خروجی: از آنجا که این متد، مقدار مربوط به کلید مشخص شده را برمیگرداند، پس ممکن است، هر نوع دادهای را در خروجی برگرداند.
روش استفاده از متد pop در پایتون
در ادامه این بخش، برای نمایش انواع پیشامدهای ممکن در مقابل این متد، ۳ مدل پیادهسازی مختلف را ارائه کردهایم.
مثال اول
متد
با توجه به کلید مشخص شده، عنصر مرتبط در دیکشنری را پیدا کرده سپس حذف میکند و در خروجی برمیگرداند.
my_dict = {'a': 1, 'b': 2, 'c': 3}
popped_value = my_dict.pop('b')
print('Popped value:', popped_value)
print('Updated dictionary:', my_dict)
بر اثر اجرای کد بالا خروجی زیر در کنسول پایتون به کاربر نمایش داده میشود.
مثال دوم
اگر کلید مورد نظر در دیکشنری وجود نداشت، این متد، با خطای استثنای
روبهرو میشود.
my_dict = {'a': 1, 'b': 2, 'c': 3}
popped_value = my_dict.pop('z')
print('Popped value:', popped_value)
print('Updated dictionary:', my_dict)
بر اثر اجرای کد بالا پیغام خطا در خروجی کنسول پایتون به کاربر نمایش داده میشود.
مثال سوم
میتوانیم مقدار پیشفرضی تعیین کنیم تا در صورت پیدا نشدن کلید مورد نظر در دیکشنری، به خروجی برگردد. برای انجام این کار باید از آرگومان دوم متد
استفاده کنیم.
my_dict = {'a': 1, 'b': 2, 'c': 3}
popped_value = my_dict.pop('z', 'Key not found')
print('Popped value:', popped_value)
print('Original dictionary:', my_dict)
بر اثر اجرای کد بالا خروجی زیر در کنسول پایتون به کاربر نمایش داده میشود.
متد popitem
متد
یکی از متدهای دیکشنری در پایتون است که برای حذف و برگرداندن جفت کلید و مقدار ثابت – آخرین عنصر اضافه شده – در دیکشنری استفاده میشود. این متد، بخصوص زمانی مفید است که میخواهیم عنصرها را با نظم دلخواهی از دیکشنری حذف کرده و مقدار مربوطه را به خروجی ارسال کنیم.
سینتکس متد
شکل پایه سینتکس متد
برای کار با دیکشنری با نام فرضی
به صورت نمایش داده شده در پایین است.
dictionary.popitem()
پارامترهای دریافتی و مقدارهای برگشتی
متد
هیچ پارامتری را به عنوان داده ورودی دریافت نمیکند. اما در خروجی تاپلی را به صورت جفت کلید-مقدار برمیگرداند. از پایتون ۳٫۷ به بعد این متد، آخرین عنصر اضافه شده به دیکشنری را به همراه مقدار متناظر آن حذف میکند.
روش استفاده از متد keys در پایتون
در ادامه برای نمایش روش کار این متد، سه مثال مختلف را پیادهسازی کردهایم.
مثال اول
متد
به صورت ثابت همیشه آخرین جفت کلید-مقدار درون دیکشنری را حذف کرده و در خروجی برمیگرداند.
d = {'a': 1, 'b': 2, 'c': 3}
item = d.popitem()
print(item)
بر اثر اجرای کد بالا تاپل
به عنوان خروجی به برنامه برمیگردد.
مثال دوم
وقتی که متد
بر روی دیکشنری خالی و بدون عنصر اعمال شود، باعث برخواستن خطای
میشود.
empty_dict = {}
try:
item = empty_dict.popitem()
except KeyError as e:
print('Dictionary is empty:', e)
بر اثر اجرای کد بالا خروجی زیر در کنسول پایتون به کاربر نمایش داده میشود. در کد بالا با استفاده از بلوک Try/Except در پایتون خطای مورد نظر را مدیریت کردهایم.
مثال سوم
با کمک این متد، میتوانیم عملکر «آخرین ورودی، اولین خروجی» (LIFO) را در دیکشنری پیادهسازی کنیم.
d = {'apple': 3, 'banana': 2, 'cherry': 1}
while d:
key, value = d.popitem()
print(f'Eating {key} ({value} left)')
بر اثر اجرای کد بالا خروجی زیر در کنسول پایتون به کاربر نمایش داده میشود.
متد setdefault
با کمک متد
در پایتون میتوانیم مقدار خاصی را با توجه به کلید مشخص شده از دیکشنری فراخوانی کنیم. اگر کلید مورد نظر در دیکشنری موجود بود، مقدار متناظر با آن برگشت داده میشود. اما اگر کلید مشخص شده در دیکشنری وجود نداشت، این متد، کلید را به همراه مقدار مشخص شده به عنوان پیشفرض در پارامتر دوم متد به دیکشنری اضافه میکند. سپس مقدار متناظر با کلید را به برنامه برمیگرداند. با کمک این متد، میتوانیم از روبهرو شدن با خطای
در زمان فراخوانی مقدار کلیدی که در دیکشنری نیست جلوگیری کنیم.
سینتکس متد
شکل پایه سینتکس متد
برای کار با دیکشنری با نام فرضی
به صورت نمایش داده شده در پایین است.
dict.setdefault(key, default=None)
پارامترهای دریافتی و مقدارهای برگشتی
متد
دو پارامتر اصلی دریافت میکند. هر دوی این پارامترها را با توضیحات مربوطه در ادامه فهرست کردهایم.
: این پارامتر، کلیدی را مشخص میکند که در دیکشنری باید جستوجو شود. بعد از پیدا کردن این کلید، مقدار متناظر با آن را به برنام برمیگردانیم.
: این پارامتر، مقداری را مشخص میکند که در صورت پیدا نشدن کلید
باید به دیکشنری اضافه شود.
خروجی: از آنجا که این متد، مقدار متناظر با کلید مشخص شده را برمیگرداند پس هر نوع دادهای موجود در دیکشنری را نیز میتواند در خروجی برگرداند.
روش استفاده از متد setdefault در پایتون
متوجه شدیم که با استفاده از متد
میتوان مقدار متناظر با کلید مشخص شده را از دیکشنری فراخوانی کرد. اما اگر کلید مشخص شده در دیکشنری وجود نداشت، متد به صورت خودکار کلید و مقدار تعیین شده را به دیکشنری اضافه کرده و سپس مقدار متناظر را در خروجی برمیگرداند.
my_dict = {'a': 1, 'b': 2}
default_val = my_dict.setdefault('c', 3)
print(default_val) # Output: 3
print(my_dict) # Output: {'a': 1, 'b': 2, 'c': 3}
بر اثر اجرای کد بالا، دادههای زیر در کنسول پایتون به کاربر نمایش داده میشوند.
متد update
متد
یکی دیگر از متدهای دیکشنری در پایتون است. این متد، برای بهروزرسانی دادههای درون دیکشنری با استفاده از دادههای دیکشنری دیگر یا نوع داده پیمایشپذیری از جفتهای کلید-مقدار بهکار برده میشود. با کمک این متد، بر اساس پارامترهای ورودی که فراهم شده میتوان جفتهای کلید-مقدار را به دیکشنری اضافه کرد یا در دیکشنری تغییر داد.
سینتکس متد
شکل پایه سینتکس این متد، پایتونی برای کار با دیکشنری با نام فرضی
به صورت زیر است.
dict.update(iterable)
پارامترهای دریافتی و مقدارهای برگشتی
ورودی: متد
فقط یک پارامتر دریافت میکند. این پارامتر، از نوع ساختارهای پیمایشپذیر است.
: پارامتر
یا دیکشنری است یا ساختار داده پیمایشپذیری که از جفتهای کلید-مقدار تشکیل شده. با کمک دادههای این پارامتر، دیکشنری موجود را بهروزرسانی میکنیم.
خروجی: متد
از دیکشنری مقدار None را برمیگرداند. در واقع این متد، فقط دیکشنری را در جای خودش بهروزرسانی کرده و هیچ خروجی خاصی بر نمیگرداند.
روش استفاده از متد update در پایتون
در ادامه این قسمت از مطلب، برای نمایش روش کار متد
، سه مثال مختلف را پیادهسازی کردهایم.
مثال اول
با توجه به مطلب بالا مثال اول را پیادهسازی میکنیم. متد
دیکشنری مورد نظر را با توجه به دادههای که به عنوان پارامتر دریافت کرده بهروزرسانی میکند. این متد، دادهها را به شکل دیکشنری یا ساختار داده پیمایشپذیر شامل «جفتهای کلید-مقدار» (Key-Value Pairs) میپذیرد. اگر هر کدام از کلیدهایی که به متد ارسال شده از قبل در دیکشنری موجود باشند، فقط مقدار متناظر با آن کلید با مقدار جدید بهروزرسانی میشود.
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
dict1.update(dict2)
print(dict1)
بر اثر اجرای کد بالا دیکشنری
در خروجی نمایش داده میشود.
مثال دوم
وقتی که با استفاده از شیء پیمایشپذیری مانند لیستی از تاپلها در حال بهروزرسانی دیکشنری هستیم، برای اینکه بتوانیم دادهای را در دیکشنری بهروزرسانی یا به آن اضافه کنیم، هر تاپل باید شامل جفت دادهای به شکل کلید و مقدار باشد.
dict1 = {'a': 1, 'b': 2}
updates = [('b', 3), ('c', 4)]
dict1.update(updates)
print(dict1)
بر اثر اجرای کد بالا دیکشنری
در خروجی ظاهر میشود.
مثال سوم
اگر کلیدی که به متد
ارسال کردهایم از قبل در دیکشنری وجود نداشت، این متد، کلید مورد اشاره را همراه با مقدار متناظر آن به دیکشنری اضافه میکند.
dict1 = {'a': 1, 'b': 2}
new_data = {'c': 3, 'd': 4}
dict1.update(new_data)
print(dict1)
بر اثر اجرای کد بالا دیکشنری
در خروجی ظاهر میشود.
متد values
متد
یکی از متدهای درونی دیکشنری در پایتون است که شیء نمایی از مقادری درون دیکشنری برمیگرداند. این شیء نمایی لیستی از همه مقادیر درون دیکشنری نمایش میدهد. با کمک متد
میتوانیم به مقادیر ذخیره شده در دیکشنری دسترسی داشته باشیم و با آنها کار کنیم.
سینتکس متد
شکل پایه سینتکس متد پایتونی
برای کار با دیکشنری با نام فرضی
به صورت نمایش داده شده در پایین است.
dict.values()
پارامترهای دریافتی و مقدارهای برگشتی
متد
هیچ پارامتری را به عنوان داده ورودی دریافت نمیکند. اما در خروجی شیء نمایی شامل همه مقادیر درون دیکشنری را برمیگرداند.
روش استفاده از متد values در پایتون
در ادامه این قسمت از مطلب، برای نمایش روش کار متد
، سه مثال مختلف را پیادهسازی کردهایم.
مثال اول
متد
، «شیء نمایی» برمیگرداند که شامل لیستی از همه مقادیر موجود در دیکشنری میشود.
data = {'a': 1, 'b': 2, 'c': 3}
print(list(data.values()))
بر اثر اجرای کد بالا لیست زیر به صورت خروجی در کنسول پایتون نمایش داده میشود.
مثال دوم
شی نمایی که توسط متد
تولید شده خواصیت پویایی دارد. به این صورت که هر تغییری که در دیکشنری ایجاد شود در لیست مقادیر منعکس میشود.
data = {'a': 1, 'b': 2, 'c': 3}
vals = data.values()
data['a'] = 100
print(list(vals))
بر اثر اجرای کد بالا لیست زیر به صورت خروجی در کنسول پایتون نمایش داده میشود.
مثال سوم
مقادیر درون شی نمایی، نسخه کپی شدهای از مقادیر ذخیره شده در دیکشنری نیستند. بلکه فقط نمایشی از آنها هستند.
data = {'a': 1, 'b': 2, 'c': 3}
vals = data.values()
data['d'] = 4
print(list(vals))
بر اثر اجرای کد بالا لیست زیر به صورت خروجی در کنسول پایتون نمایش داده میشود.
تقویت مهارت های پایتونی
پایتون یک زبان برنامهنویسی قدرتمند و پرکاربرد است که در حوزههای مختلفی از توسعه نرمافزار تا علم داده و ساخت اپلیکیشنهای اینترنتی مورد استفاده قرار میگیرد. بعد از اینکه مهارتهای پایتونی خود را در سطح قابل قبولی ارتقا دادید، زمان آماده شدن برای ورود به بازار کار است. به این منظور توصیه میکنیم که فیلمهای آموزشی مربوط به کاربردهای پایتون را در پروژههای واقعی تماشا کنید. این فیلمها توسط وبسایت آموزشی فرادرس با بیشترین کیفیت ممکن تولید شدهاند و روی واقعیترین پروژههای بهروز کار میکنند.
- فیلم آموزش پروژه محور پایتون در ارتباط با مدیریت فایل ها در فرادرس
- فیلم آموزش پروژه محور طراحی سایت و وب اپلیکیشن با فریمورک Django فرادرس
- فیلم آموزش پروژه محور پایتون در ارتباط با کار با Tkinter و پایگاه داده SQLite3 فرادرس
- فیلم آموزش پروژه محور پایتون درباره ساخت برنامه هواشناسی آنلاین در فرادرس
فیلمهای پروژه محوری که در بالا مورد اشاره قرار گرفتند، گزینههای بسیار خوبی برای ترکیب تکنیکها و تکنولوژیهای مختلف تولید نرم افزار هستند. در صورت تمایل با کلیک بر روی تصویر بالا میتوانید وارد صفحه اصلی این مجموعه آموزشی شده و فیلمهای بیشتری با پروژههای متنوعتری را تماشا کنید که توسط زبانهای مختلف تهیه شدهاند.
جمع بندی
متدهای دیکشنری روشهای متنوعی را برای اضافه و حذفکردن و اعمال تغییر در عناصر درون دیکشنری ارائه دادهاند. همچنین این متدها دسترسی به دادههای درون دیکشنریها را نیز فراهم کردهاند. با کمک متدهای دیکشنری میتوان بر روی دادههای درون دیکشنری پیمایش کرد. در این مطلب از مجله فرادرس، ابتدا با متدهای دیکشنری در پایتون آشنا شدیم. سپس برای درک بهتر هر کدام از متدها توضیحات بیشتر همراه با مثالهای مختلف کدنویسی شدهای ارائه دادیم.
متدهای دیکشنری در پایتون، عملیات مختلف ممکن بر روی دیکشنریها را ممکن میکنند. دیکشنریها جزو مفیدترین و پرکاربردترین ساختارهای ذخیره داده در پایتون و برنامهنویسی هستند. شباهت بسیار زیادی به JSON دارند و تقریبا در برنامههای بزرگ به طور دائم استفاده میشوند. با تسلط به کار بر روی متدهای دیکشنری میتوانید وظایف خاص و پیچیدهای را در حوزههای مختلفی مانند متن کاوی انجام دهید.
نوشته لیست کامل متدهای دیکشنری در پایتون اولین بار در فرادرس – مجله. پدیدار شد.
منبع