آموزش دیکشنری در پایتون و بررسی متدهای مختلف آن
مقدمه
در این جلسه قصد داریم در مورد دیکشنری ها در پایتون با یکدگیر صحبت کنیم. دیکشنری ها نوع داده ی جدیدی هستند که بسیار میتوانند کمک کننده باشند. پیشنهاد می شود برای درک بهتر این جلسه پیشنهاد می شود حتما جلسات قبل این دوره را از لینک زیر مطالعه کنید:
دیکشنری چیست ؟
دیکشنری در واقع یک مجموعه مرتب نشده از المان ها و آیتم ها است. برای انواع داده های دیگری که قبلا معرفی کرده ایم هر المان صرفا یک عدد یا رشته یا … می باشد در حالی که در یک دیکشنری یک المان از دو عنصر تشکیل شده است.
چگونه میتوانیم یک دیکشنری را ایجاد کنیم ؟
برای ایچاد یک دیکشنری کافی است المان های مورد نظر خود را درون یک براکت منحنی شکل (به انگلیسی curly braces) که با علامت { } در کیبورد مشخص شده است قرار دهیم و آنها را به کمک کام از یکدیگر جدا کنیم.
هر المان یک دیکشنری از دو بخش تشکیل شده است. یک بخش کلید (key) است و بخش دیگر آن مقدار متناظر با آن کلید (value) است. در واقع هر المان در یک دیکشنری به صورت {key:vlaue} می باشد.
در یک دیکشنری value میتواند هر نوع داده ای باشد در حالی که key ها باید حتما داده های غیر قابل تغییر و یکتا باشند. اجازه دهید با هم چند مثال از ایجاد یک دیکشنری ببینیم:
# empty dictionary my_dict = {} # dictionary with integer keys my_dict = {1: 'apple', 2: 'ball'} # dictionary with mixed keys my_dict = {'name': 'John', 1: [2, 4, 3]} # using dict() my_dict = dict({1:'apple', 2:'ball'}) # from sequence having each item as a pair my_dict = dict([(1,'apple'), (2,'ball')])
در مثال های بالا سه دیکشنری اول به صورت معمول ایجاد شده است. اما در دو مثال آخر از dict برای ایجاد یک دیکشنری استفاده شده است. در واقع در مثال آخر مشاهده میکنید که میتوانیم از مجموعه ای از المان های جفت هم یک دیکشنری را بسازیم.
چگونه میتوان به المان های یک دیکشنری دسترسی داشت ؟
برای دسترسی به المان های انواع داده های دیگر ما از اندیس ها استفاده میکنیم. در دیکشنری ها برای این کار ما از key ها برای این کار استفاده میکنیم. key ها را میتوان درون براکت قرار داد و value متناسب با آن را مشاهده کرد و یا از متد get استفاده کنیم. مثال های زیر را ببینید:
my_dict = {'name':'Jack', 'age': 26} # Output: Jack print(my_dict['name']) # Output: 26 print(my_dict.get('age')) # Trying to access keys which doesn't exist throws error # my_dict.get('address') # my_dict['address']
خروجی کد بالا به صورت زیر می باشد:
Jack 26
یکی از مزایایی که متد get نسبت به براکت دارد این است که در صورت موجود نبودن یک کلید None برگردانده می شود در حالی که به کمک براکت با Error مواجه می شویم.
چگونه میتوان المان های یک دیکشنری را تغییر داد و یا به آن المانی را اضافه کرد؟
دیکشنری را میتوان تغییر داد. با استفاده از عملگر مساوی میتوانیم value ها را تغییر دهیم یا المان جدیدی را به دیکشنری خود اضافه کنیم.
در صورتی که key در دیکشنری وجود داشته باشد مقدار value متناظر با آن key آپدیت می شود و در صورتی که آن key در دیکشنری وجود نداشته باشد یک المان جدید به دیکشنری اضافه می شود و key و value آن متناظر با مقادیر قرار داده شده می شود.
مثال ها زیر به درک بهتر این مفاهیم کمک می کند:
my_dict = {'name':'Jack', 'age': 26} # update value my_dict['age'] = 27 #Output: {'age': 27, 'name': 'Jack'} print(my_dict) # add item my_dict['address'] = 'Downtown' # Output: {'address': 'Downtown', 'age': 27, 'name': 'Jack'} print(my_dict)
نتیجه اجرای کد بالا به صورت زیر خواهد بود:
{'name': 'Jack', 'age': 27} {'name': 'Jack', 'age': 27, 'address': 'Downtown'}
چگونه میتوانیم یک المان را از یک دیکشنری حذف کنیم ؟
به کمک متد pop میتوانیم یک المان را از یک دیکشنری حذف کنیم. این متد المان مربوطه را حذف میکند و value متناسب با key قرار داده شده را برمیگرداند.
از متد popitem نیز میتوان برای حذف یک المان دلخواه استفاده کرد. همه المان های یک دیکشنری نیز با متد clear حذف می شوند.
متد دیگری نیز که برای حذف استفاده می شود متد del می باشد که به کمک آن میتوان یک المان یا کل دیکشنری را به صورت کامل پاک کرد. مثال های زیر را ببینید:
# create a dictionary squares = {1:1, 2:4, 3:9, 4:16, 5:25} # remove a particular item # Output: 16 print(squares.pop(4)) # Output: {1: 1, 2: 4, 3: 9, 5: 25} print(squares) # remove an arbitrary item # Output: (1, 1) print(squares.popitem()) # Output: {2: 4, 3: 9, 5: 25} print(squares) # delete a particular item del squares[5] # Output: {2: 4, 3: 9} print(squares) # remove all items squares.clear() # Output: {} print(squares) # delete the dictionary itself del squares # Throws Error # print(squares)
وقتی که مثال بالا را اجرا کنیم نتیجه به صورت زیر خواهد بود :
16 {1: 1, 2: 4, 3: 9, 5: 25} (1, 1) {2: 4, 3: 9, 5: 25} {2: 4, 3: 9} {}
متدهای دیکشنری:
در جدول زیر مجموعه کاملی از متدها آورده شده است. البته در برخی از مثال های بالا از این متدها استفاده شده است.
تست اعضای یک دیکشنری:
با استفاده از کلمه کلیدی In میتوانیم چک کنیم که آیا یک کلید در یک دیکشنری قرار دارد یا خیر. توجه داشته باشید که بودن در یک دیکشنری فقط برای کلیدها قابل کنترل می باشد و برای Value ها نمیتوانیم چنین کنترلی را داشته باشیم.
برای روشن شدن بحث مثال زیر را ببینید:
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81} # Output: True print(1 in squares) # Output: True print(2 not in squares) # membership tests for key only not value # Output: False print(49 in squares)
حلقه for و دیکشنری:
به کمک یک حلقه for میتوانیم بر روی کلیدهای یک دیکشنری حرکت کنیم و Value ها آن ها را در خروجی چاپ کنیم. مثال زیر را ببینید:
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81} for i in squares: print(squares[i])
استفاده از توابع داخلی پایتون در دیکشنری ها :
علاوه بر متدهای گفته شده در بالا خود پایتون دارای یک سری توابع است که میتوانیم از این توابع بر روی دیکشنری ها استفاده کنیم. توابع any و all و len و cmp و sorted از این نمونه هستند. در جدول زیر کارکرد هر یک از این توابع آورده شده است.
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81} # Output: 5 print(len(squares)) # Output: [1, 3, 5, 7, 9] print(sorted(squares))
در پایان این جلسه تمارینی آورده شده است که به شدت تاکید می شود برای درک بهتر این جلسه حتما انجام شود. لطفا پس از انجام این تمارین آنها را به صورت کامنت قرار دهید تا مورد استفاده دوستان دیگر نیز قرار گیرد.
تمرین ۱ : تابعی بنویسید که سه دیکشنری زیر را در ورودی گرفته و آن ها را به یک دیکشنری تبدیل کند و در خروجی نمایش دهد.
تمرین ۲ : برنامه ای بنویسید که چک کند آیا یک کلید در یک دیکشنری وجود دارد یا خیر. در صورت وجود داشتن عبارت TRUE و در صورت موجود نبودن عبارت FALSE در خروجی نشان داده شود.
تمرین ۳ : تابعی بنویسید که یک دیکشنری را در ورودی خود دریافت کند و ۳ مقدار از Value ها که بیشتر مقدار را دارند در خروجی چاپ کند.
نکته : پس از حل سوالات ، لطفا کد های خود را در قسمت کامنت ها قرار دهید تا در صورتی که دوستان دیگر دچار مشکل شدند ، از کدهای شما کمک بگیرند.
مثل همیشه میتوانید ما را در تلگرام و یا اینستاگرام دنبال کنید:
3 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
print(‘ Input Your Number : ‘)
print(‘ a<=b : ')
a=int(input())
b=int(input())
x={}
for i in range (a,b+1):
x[i]=i**2
print(' Inter Your Question : ')
q=int(input())
print (q in x)
rint(‘ Input Your Number : ‘)
print(‘ a<=b : ')
a=int(input())
b=int(input())
x={}
for i in range (a,b+1):
x[i]=i**2
print(' c<=d : ')
c=int(input())
d=int(input())
y={}
for j in range (c,d+1):
y[j]=j**2
print(' e<=f : ')
e=int(input())
f=int(input())
z={}
for k in range (e,f+1):
z[k]=k**2
print(x)
print(y)
print(z)
t={}
t.update(x)
t.update(y)
t.update(z)
print(t)
این جواب پیچیده تره
a={1:1,2:4,3:9}
b={4:16,5:25}
c={6:36,7:49}
d={}
b.update(a)
c.update(b)
d.update(c)
print (d)