دیکشنری در برنامه نویسی پایتون
دیکشنری در برنامه نویسی پایتون
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، همه چیز را درباره دیکشنری در برنامه نویسی پایتون (Python Dictionary) خواهید آموخت. نحوه ایجاد آنها، دسترسی، افزودن، حذف عناصر از آنها و روشهای توکار مختلف را خواهید آموخت.
پیشنهاد ویژه : پکیج آموزش پایتون مختص بازار کار
دیکشنری در برنامه نویسی پایتون مجموعه ای غیر مرتب از موارد است. هر مورد از دیکشنری دارای یک جفت کلید/ مقدار (key/value) است.
دیکشنری ها برای بازیابی مقادیر هنگامی که کلید مشخص است بهینه شده اند.
ایجاد دیکشنری در پایتون
ایجاد دیکشنری به سادگی قرار دادن موارد در داخل آکولاد {} می باشد و عناصر را به وسیله ویرگول از یکدیگر جدا می کنند.
یک عنصر دارای یک کلید و یک مقدار متناظر است که به صورت جفت بیان می شود (کلید: مقدار).
در حالی که مقادیر می توانند از هر نوع داده ای باشند و می توانند تکرار شوند، کلیدها باید از نوع تغییرناپذیر (رشته ، عدد یا تاپل با عناصر تغییرناپذیر) باشند و باید منحصر به فرد باشند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 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 یک دیکشنری ایجاد کنیم.
دسترسی به عناصر از فرهنگ لغت
در حالی که از اندیس گذاری با سایر داده ها برای دستیابی به مقادیر استفاده می شود، یک دیکشنری از کلیدها استفاده می کند. از کلیدها می توان داخل کروشه [] و یا با متد ()get استفاده کرد.
اگر از کروشه [] استفاده کنیم، در صورت پیدا نکردن کلید در دیکشنری KeyError ، نشان داده می شود. از طرف دیگر، در متد ()get در صورت پیدا نشدن کلید، None را برمی گرداند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# get vs [] for retrieving elements 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 # Output None print(my_dict.get('address')) # KeyError print(my_dict['address']) |
خروجی
1 2 3 4 5 6 7 |
Jack 26 None Traceback (most recent call last): File "<string>", line 15, in <module> print(my_dict['address']) KeyError: 'address' |
تغییر و افزودن عناصر در دیکشنری پایتون
دیکشنری ها قابل تغییر هستند. با استفاده از یک عملگر انتساب می توانیم موارد جدیدی اضافه کنیم یا مقدار موارد موجود را تغییر دهیم.
اگر کلید از قبل وجود داشته باشد، مقدار موجود به روز می شود. در صورت عدم وجود کلید، یک جفت جدید (کلید: مقدار) به دیکشنری اضافه می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# Changing and adding Dictionary Elements 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) |
خروجی
1 2 |
{'name': 'Jack', 'age': 27} {'name': 'Jack', 'age': 27, 'address': 'Downtown'} |
حذف عناصر از دیکشنری در پایتون
ما می توانیم با استفاده از روش ()pop مورد خاصی را در دیکشنری حذف کنیم. این روش با استفاده از کلید ارائه شده یک مورد را حذف کرده و مقدار را برمی گرداند.
از روش ()popitem می توان برای حذف و برگرداندن جفت مورد دلخواه (کلید ، مقدار) از دیکشنری استفاده کرد. با استفاده از متد ()clear همه موارد را می توان یک باره حذف کرد.
همچنین می توانیم از کلیدواژه del برای حذف موارد منفرد یا کل دیکشنری خود استفاده کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# Removing elements from a dictionary # create a dictionary squares = {1: 1, 2: 4, 3: 9, 4: 16, 5: 25} # remove a particular item, returns its value # Output: 16 print(squares.pop(4)) # Output: {1: 1, 2: 4, 3: 9, 5: 25} print(squares) # remove an arbitrary item, return (key,value) # Output: (5, 25) print(squares.popitem()) # Output: {1: 1, 2: 4, 3: 9} print(squares) # remove all items squares.clear() # Output: {} print(squares) # delete the dictionary itself del squares # Throws Error print(squares) |
خروجی
1 2 3 4 5 6 7 8 9 |
16 {1: 1, 2: 4, 3: 9, 5: 25} (5, 25) {1: 1, 2: 4, 3: 9} {} Traceback (most recent call last): File "<string>", line 30, in <module> print(squares) NameError: name 'squares' is not defined |
متدهای دیکشنری پایتون
متدهایی که با یک دیکشنری در دسترس هستند در زیر آورده شده اند. برخی از آنها قبلاً در مثالهای فوق استفاده شده است.
متد | توضیحات |
---|---|
()clear | همه عناصر را از دیکشنری حذف می کند. |
()copy | shallow copy دیکشنری را برمی گرداند. |
([fromkeys(seq[, v | دیکشنری جدیدی را با کلیدهایی از seq و مقدار برابر با v برمی گرداند (به طور پیش فرض برای None). |
([get(key[,d | مقدار کلید را برمی گرداند. اگر کلید وجود نداشته باشد، d را برمی گرداند (به طور پیش فرض برای None). |
()items | یک شی جدید از موارد دیکشنری را در قالب (کلید، مقدار) بازگردانید. |
()keys | شی جدیدی از کلیدهای دیکشنری را برمی گرداند. |
([pop(key[,d | مورد را با کلید حذف می کند و اگر کلید پیدا نشد مقدار یا d آن را برمی گرداند. اگر d ارائه نشود و کلید پیدا نشود، KeyError را افزایش می دهد. |
()popitem | مورد دلخواه (کلید، مقدار) را حذف و برمی گرداند. اگر دیکشنری خالی باشد KeyError را بالا می برد. |
([setdefault(key[,d | اگر کلید در دیکشنری باشد مقدار مربوطه را برمی گرداند. در غیر این صورت، کلید را با مقدار d وارد می کنیم و d را برمی گردانیم (به طور پیش فرض None). |
([update([other | دیکشنری را با جفت کلید / مقدار از سایر موارد،به روز می کند. |
()values | شی جدیدی از مقادیر دیکشنری را برمی گرداند |
1 2 3 4 5 6 7 8 9 10 11 |
# Dictionary Methods marks = {}.fromkeys(['Math', 'English', 'Science'], 0) # Output: {'English': 0, 'Math': 0, 'Science': 0} print(marks) for item in marks.items(): print(item) # Output: ['English', 'Math', 'Science'] print(list(sorted(marks.keys()))) |
خروجی
1 2 3 4 5 |
{'Math': 0, 'English': 0, 'Science': 0} ('Math', 0) ('English', 0) ('Science', 0) ['English', 'Math', 'Science'] |
روش Comprehension دیکشنری در پایتون
Comprehension دیکشنری یک روش ظریف و مختصر برای ایجاد دیکشنری جدید از یک قابلیت تکرار شونده در پایتون است.
Comprehension دیکشنری شامل یک جفت بیان (کلید: مقدار) است که به دنبال آن یک دستور for در داخل آکولاد {} وجود دارد.
در اینجا مثالی برای ساخت یک دیکشنری آورده شده است که هر مورد جفت عدد و مربع آن است.
1 2 3 4 |
# Dictionary Comprehension squares = {x: x*x for x in range(6)} print(squares) |
خروجی
1 |
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25} |
این کد معادل است با؛
1 2 3 4 |
squares = {} for x in range(6): squares[x] = x*x print(squares) |
خروجی
1 |
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25} |
روش Comprehension دیکشنری می تواند به صورت اختیاری حاوی عبارات for یا if بیشتری باشد.
عبارت if اختیاری می تواند موارد را برای تشکیل دیکشنری جدید فیلتر کند.
در اینجا چند نمونه برای ساخت یک دیکشنری آورده شده است.
1 2 3 4 |
# Dictionary Comprehension with if conditional odd_squares = {x: x*x for x in range(11) if x % 2 == 1} print(odd_squares) |
خروجی
1 |
{1: 1, 3: 9, 5: 25, 7: 49, 9: 81} |
سایر عملیات های دیکشنری در پایتون
آزمون عضویت در دیکشنری
می توانیم با کلیدواژه in بررسی کنیم که آیا یک کلید در دیکشنری وجود دارد یا خیر. توجه داشته باشید که تست عضویت فقط برای کلیدها است نه برای مقادیر.
1 2 3 4 5 6 7 8 9 10 11 12 |
# Membership Test for Dictionary Keys 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) |
خروجی
1 2 3 |
True True False |
تکرار از طریق دیکشنری در پایتون
ما می توانیم هر کلید را در دیکشنری با استفاده از حلقه for تکرار کنیم.
1 2 3 4 |
# Iterating through a Dictionary squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81} for i in squares: print(squares[i]) |
خروجی
1 2 3 4 5 |
1 9 25 49 81 |
توابع توکار دیکشنری در پایتون
توابع توکار مانند ()
all()
, any()
, len()
, cmp()
, sorted
و غیره معمولاً با دیکشنری ها برای انجام کارهای مختلف استفاده می شوند.
تابع | توضیحات |
---|---|
()all | اگر همه کلیدهای دیکشنری درست است (یا اگر دیکشنری خالی است) True برگردانده می شود. |
()any | اگر هر كلیدی از دیکشنری درست است، True برگردانده می شود.. اگر دیکشنری خالی است، False برگردانده می شود. |
()len | طول (تعداد عناصر) را در دیکشنری برگردانده می شود. |
()cmp | موارد دو دیکشنری را با هم مقایسه می کند. |
()sorted | لیست مرتب شده جدیدی از کلیدها را در دیکشنری برگردانده می شود. |
1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# Dictionary Built-in Functions squares = {0: 0, 1: 1, 3: 9, 5: 25, 7: 49, 9: 81} # Output: False print(all(squares)) # Output: True print(any(squares)) # Output: 6 print(len(squares)) # Output: [0, 1, 3, 5, 7, 9] print(sorted(squares)) |
خروجی
1 2 3 4 |
False True 6 [0, 1, 3, 5, 7, 9] |
لیست جلسات قبل آموزش برنامه نویسی پایتون
- آموزش نصب و اجرای برنامه نویسی پایتون
- کلیدواژه ها و شناسه های برنامه نویسی پایتون
- دستورات، تورفتگی ها و کامنت ها در برنامه نویسی پایتون
- متغیرها، ثابت ها و لیترال ها در برنامه نویسی پایتون
- انواع داده ها در برنامه نویسی پایتون
- تبدیل نوع در برنامه نویسی پایتون
- ورودی، خروجی و وارد کردن در برنامه نویسی پایتون
- عملگرها در برنامه نویسی پایتون
- نام و دامنه در برنامه نویسی پایتون
- دستور شرطی if…else در برنامه نویسی پایتون
- حلقه for در برنامه نویسی پایتون
- حلقه while در برنامه نویسی پایتون
- دستورات break و continue در برنامه نویسی پایتون
- دستور pass در برنامه نویسی پایتون
- توابع در برنامه نویسی پایتون
- آرگومان تابع در برنامه نویسی پایتون
- تابع بازگشتی در برنامه نویسی پایتون
- تابع بی نام/ تابع لامبدا در برنامه نویسی پایتون
- متغیرهای سراسری، محلی و غیر محلی در برنامه نویسی پایتون
- کلیدواژه global در برنامه نویسی پایتون
- ماژول های برنامه نویسی پایتون
- پکیج ها در برنامه نویسی پایتون
- اعداد و تبدیل نوع داده در برنامه نویسی پایتون
- لیست در برنامه نویسی پایتون
- تاپل در برنامه نویسی پایتون
- رشته ها در برنامه نویسی پایتون
- مجموعه ها در برنامه نویسی پایتون
دیدگاه شما