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