دیکشنری در برنامه نویسی پایتون

4 سال پیش

دیکشنری در برنامه نویسی پایتون

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، همه چیز را درباره دیکشنری در برنامه نویسی پایتون (Python Dictionary) خواهید آموخت. نحوه ایجاد آنها، دسترسی، افزودن، حذف عناصر از آنها و روشهای توکار مختلف را خواهید آموخت.

پیشنهاد ویژه : پکیج آموزش پایتون مختص بازار کار

 

دیکشنری در برنامه نویسی پایتون مجموعه ای غیر مرتب از موارد است. هر مورد از دیکشنری دارای یک جفت کلید/ مقدار (key/value) است.

دیکشنری ها برای بازیابی مقادیر هنگامی که کلید مشخص است بهینه شده اند.

 

ایجاد دیکشنری در پایتون

ایجاد دیکشنری به سادگی قرار دادن موارد در داخل آکولاد {}  می باشد و عناصر را به وسیله ویرگول از یکدیگر جدا می کنند.

یک عنصر دارای یک کلید و یک مقدار متناظر است که به صورت جفت بیان می شود (کلید: مقدار).

در حالی که مقادیر می توانند از هر نوع داده ای باشند و می توانند تکرار شوند، کلیدها باید از نوع تغییرناپذیر (رشته ، عدد یا تاپل با عناصر تغییرناپذیر) باشند و باید منحصر به فرد باشند.

# 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 را برمی گرداند.

# 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'])

 

خروجی

Jack
۲۶
None
Traceback (most recent call last):
  File "<string>", line 15, in <module>
    print(my_dict['address'])
KeyError: 'address'

 

 

تغییر و افزودن عناصر در دیکشنری پایتون

دیکشنری ها قابل تغییر هستند. با استفاده از یک عملگر انتساب می توانیم موارد جدیدی اضافه کنیم یا مقدار موارد موجود را تغییر دهیم.

اگر کلید از قبل وجود داشته باشد، مقدار موجود به روز می شود. در صورت عدم وجود کلید، یک جفت جدید (کلید: مقدار) به دیکشنری اضافه می شود.

# 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)

 

خروجی

{'name': 'Jack', 'age': 27}
{'name': 'Jack', 'age': 27, 'address': 'Downtown'}

 

 

حذف عناصر از دیکشنری در پایتون

ما می توانیم با استفاده از روش ()pop مورد خاصی را در دیکشنری حذف کنیم. این روش با استفاده از کلید ارائه شده یک مورد را حذف کرده و مقدار را برمی گرداند.

از روش ()popitem می توان برای حذف و برگرداندن جفت مورد دلخواه (کلید ، مقدار) از دیکشنری استفاده کرد. با استفاده از متد ()clear همه موارد را می توان یک باره حذف کرد.

همچنین می توانیم از کلیدواژه del برای حذف موارد منفرد یا کل دیکشنری خود استفاده کنیم.

# 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)

 

خروجی

۱۶
{۱: ۱, ۲: ۴, ۳: ۹, ۵: ۲۵}
(۵, ۲۵)
{۱: ۱, ۲: ۴, ۳: ۹}
{}
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 شی جدیدی از مقادیر دیکشنری را برمی گرداند
# 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())))

 

خروجی

{'Math': 0, 'English': 0, 'Science': 0}
('Math', 0)
('English', 0)
('Science', 0)
['English', 'Math', 'Science']

 

 

روش Comprehension دیکشنری در پایتون

Comprehension دیکشنری یک روش ظریف و مختصر برای ایجاد دیکشنری جدید از یک قابلیت تکرار شونده در پایتون است.

Comprehension دیکشنری شامل یک جفت بیان (کلید: مقدار) است که به دنبال آن یک دستور for در داخل آکولاد {} وجود دارد.

در اینجا مثالی برای ساخت یک دیکشنری آورده شده است که هر مورد جفت عدد و مربع آن است.

# Dictionary Comprehension
squares = {x: x*x for x in range(6)}

print(squares)

 

خروجی

{۰: ۰, ۱: ۱, ۲: ۴, ۳: ۹, ۴: ۱۶, ۵: ۲۵}

 

این کد معادل است با؛

squares = {}
for x in range(6):
    squares[x] = x*x
print(squares)

 

خروجی

{۰: ۰, ۱: ۱, ۲: ۴, ۳: ۹, ۴: ۱۶, ۵: ۲۵}

 

روش Comprehension دیکشنری می تواند به صورت اختیاری حاوی عبارات for یا if بیشتری  باشد.

عبارت if اختیاری می تواند موارد را برای تشکیل دیکشنری جدید فیلتر کند.

در اینجا چند نمونه برای ساخت یک دیکشنری آورده شده است.

# Dictionary Comprehension with if conditional
odd_squares = {x: x*x for x in range(11) if x % 2 == 1}

print(odd_squares)

 

خروجی

{۱: ۱, ۳: ۹, ۵: ۲۵, ۷: ۴۹, ۹: ۸۱}

 

 

سایر عملیات های  دیکشنری در پایتون
آزمون عضویت در دیکشنری

می توانیم با کلیدواژه in بررسی کنیم که آیا یک کلید در دیکشنری وجود دارد یا خیر. توجه داشته باشید که تست عضویت فقط برای کلیدها است نه برای مقادیر.

# 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)

 

خروجی

True
True
False

 

تکرار از طریق دیکشنری در پایتون

ما می توانیم هر کلید را در دیکشنری با استفاده از حلقه for تکرار کنیم.

# Iterating through a Dictionary
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
for i in squares:
    print(squares[i])

 

خروجی

۱
۹
۲۵
۴۹
۸۱

 

 

توابع توکار دیکشنری در پایتون

توابع توکار مانند ()all()any()len()cmp()sorted و غیره معمولاً با دیکشنری ها برای انجام کارهای مختلف استفاده می شوند.

تابع توضیحات
()all اگر همه کلیدهای دیکشنری درست است (یا اگر دیکشنری خالی است) True برگردانده می شود.
()any اگر هر كلیدی از دیکشنری درست است، True برگردانده می شود.. اگر دیکشنری خالی است، False برگردانده می شود.
()len طول (تعداد عناصر) را در دیکشنری برگردانده می شود.
()cmp موارد دو دیکشنری را با هم مقایسه می کند.
()sorted لیست مرتب شده جدیدی از کلیدها را در دیکشنری برگردانده می شود.

# 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))

 

خروجی

False
True
۶
[۰, ۱, ۳, ۵, ۷, ۹]

 

 

منبع.

 

لیست جلسات قبل آموزش برنامه نویسی پایتون

  1. آموزش نصب و اجرای برنامه نویسی پایتون
  2. کلیدواژه ها و شناسه های برنامه نویسی پایتون
  3. دستورات، تورفتگی ها و کامنت ها در برنامه نویسی پایتون
  4. متغیرها، ثابت ها و لیترال ها در برنامه نویسی پایتون 
  5. انواع داده ها در برنامه نویسی پایتون
  6. تبدیل نوع در برنامه نویسی پایتون
  7. ورودی، خروجی و وارد کردن در برنامه نویسی پایتون
  8. عملگرها در برنامه نویسی پایتون
  9. نام و دامنه در برنامه نویسی پایتون
  10. دستور شرطی if…else در برنامه نویسی پایتون
  11. حلقه for در برنامه نویسی پایتون
  12. حلقه while در برنامه نویسی پایتون
  13. دستورات break و continue در برنامه نویسی پایتون
  14. دستور pass در برنامه نویسی پایتون
  15. توابع در برنامه نویسی پایتون
  16. آرگومان تابع در برنامه نویسی پایتون
  17. تابع بازگشتی در برنامه نویسی پایتون
  18. تابع بی نام/ تابع لامبدا در برنامه نویسی پایتون
  19. متغیرهای سراسری، محلی و غیر محلی در برنامه نویسی پایتون
  20. کلیدواژه global در برنامه نویسی پایتون
  21. ماژول های برنامه نویسی پایتون
  22. پکیج ها در برنامه نویسی پایتون
  23. اعداد و تبدیل نوع داده در برنامه نویسی پایتون 
  24. لیست در برنامه نویسی پایتون
  25. تاپل در برنامه نویسی پایتون 
  26. رشته ها در برنامه نویسی پایتون
  27. مجموعه ها در برنامه نویسی پایتون
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه