Oruji.org
Oruji.orgPersian Tutorials
ورود
ویرایش: 1396/11/13 19:12

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

در این آموزش از کتاب برخط (Online) فارسی پایتون (Python)، نوع داده دیکشنری (Dictionary) و کاربرد آن را مورد بررسی قرار می دهیم.

نوع داده دیکشنری (Dictionary) در زبان برنامه نویسی پایتون (Python)، به صورت لیستی از، کلیدها و value ها است، هر کلید توسط علامت کالن (:) از value جدا می شود، اندیس ها نیز توسط علامت کاما (,) از یکدیگر جدا می شوند. یک دیکشنری خالی بدون اندیس با استفاده از تنها دو آکولاد خالی به صورت {} نوشته می شود.

کلید ها در نوع داده dictionary یکتا می باشد (بدین معنی که نمی توان دو کلید یکسان داشت)، ولی value می تواند تکراری نیز باشد. value در دیکشنری می تواند هر نوعی باشد، ولی کلیدها باید یک نوع داده غیر قابل تغییر (immutable) مانند string، number، یا tuble باشد.

دسترسی به value ها در Dictionary

برای دسترسی به مقادیر دیکشنری، تنها کافی است از علامت کروشه و کلید متناظر با value مورد نظر استفاده کرد، در زیر مثالی ساده نشان داده شده است:

#!/usr/bin/python3 dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} print ("dict['Name']: ", dict['Name']) print ("dict['Age']: ", dict['Age'])

زمانی که کد بالا اجرا شود، خروجی زیر را تولید می کند:

dict['Name']: Zara dict['Age']: 7

در صورتی که کلید مورد نظر در دیکشنری موجود نباشد، خطای زیر رخ خواهد داد:

#!/usr/bin/python3 dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}; print "dict['Alice']: ", dict['Alice']

زمانی که کد بالا اجرا شود، خروجی زیر را تولید می کند:

dict['Zara']: Traceback (most recent call last): File "test.py", line 4, in print "dict['Alice']: ", dict['Alice']; KeyError: 'Alice'

بروزرسانی Dictionary

برای تغییر مقادیر، افزودن آیتم جدید به صورت زیر عمل می کنیم:

#!/usr/bin/python3 dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} dict['Age'] = 8; # update existing entry dict['School'] = "DPS School" # Add new entry print ("dict['Age']: ", dict['Age']) print ("dict['School']: ", dict['School'])

زمانی که کد بالا اجرا شود، خروجی زیر را تولید می کند:

dict['Age']: 8 dict['School']: DPS School

حذف مقادیر دیکشنری

شما می توانید یک آیتم یا اندیس خاص و یا تمامی مقادیر یک دیکشنری را حذف کنید، حتی می تواند خود دیکشنری را به طور کلی با یک عملیات حذف کرد.

برای حذف کل یک دیکشنری، تنها کافی است از عبارت del استفاده کنید. در زیر مثال ساده ای آورده شده است:

#!/usr/bin/python3 dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} del dict['Name'] # remove entry with key 'Name' dict.clear() # remove all entries in dict del dict # delete entire dictionary print ("dict['Age']: ", dict['Age']) print ("dict['School']: ", dict['School'])

خروجی کد بالا.

بعد از del dict یک خطا (exception) ایجاد می شود، دیکشنری دیگر وجود ندارد.

dict['Age']: Traceback (most recent call last): File "test.py", line 8, in print "dict['Age']: ", dict['Age']; TypeError: 'type' object is unsubscriptable

متد del() در ادامه توضیح داده خواهد شد.

خصوصیات کلیدهای Dictionary

value ها هیچ محدودیتی ندارند. چرا که می توانند هر شیء دلخواهی از پایتون باشند، چه شیء های استاندارد و یا شیء های تعریف شده توسط کاربر. ولی این برای کلیدها صدق نمی کند.

دو نکته ی مهم درباره کلیدها در دیکشنری را باید بخاطر سپرد:

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

#!/usr/bin/python3 dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'} print ("dict['Name']: ", dict['Name'])

زمانی که کد بالا اجرا شود، خروجی زیر را تولید می کند:

dict['Name']: Manni

(ب) کلیدها باید از نوع داده های غیر قابل تغییر (immutable) باشند. این بدان معناست که می توان از string، number و tuple ها در کلید های دیکشنری استفاده کرد، ولی چیزی شبیه به ['key'] را نمی توان استفاده کرد، در زیر مثال ساده ای آورده شده است:

#!/usr/bin/python3 dict = {['Name']: 'Zara', 'Age': 7} print ("dict['Name']: ", dict['Name'])

زمانی که کد بالا اجرا شود، خروجی زیر را تولید می کند:

Traceback (most recent call last): File "test.py", line 3, in dict = {['Name']: 'Zara', 'Age': 7} TypeError: list objects are unhashable

توابع و متدهای داخلی (built-in) در دیکشنری

پایتون حاوی توابع dictionary زیر می باشد:

  1. cmp(dict1, dict2) در پایتون 3 دیگر قابل دسترس نیست.
  2. len(dict) اندازه طول دیکشنری را بر می گرداند. این برابر با تعداد آیتم ها یا اندیس ها در دیکشنری است.
  3. str(dict) یک رشته قابل نمایش از دیکشنری را تولید می کند.
  4. type(variable) نوع داده مقدار ورودی بر می گرداند، در صورتی که مقدار ورودی یک دیکشنری باشد، نوع dictionary را برمی گرداند.

پایتون حاوی متدهای دیکشنری زیر می باشد:

  1. dict.clear() تمامی اندیس های دیکشنری dict را حذف می کند
  2. dict.copy() یک کپی از دیکشنری dict را بدون تغییر در مقادیر اصلی آن برمی گرداند.
  3. dict.fromkeys() یک دیکشنری جدید با استفاده از کلید های seq ورودی ایجاد می کند.
  4. dict.get(key, default=None) مقدار کلید key را برمی گرداند، و در صورتی که کلید در دیکشنری نباشد، مقدار default را بر می گرداند.
  5. dict.has_key(key) این متد حذف شده است، بجای آن از عمل in استفاده کنید.
  6. dict.items() لیستی از tuple های جفت شده از کلید و value های dict را بر می گرداند.
  7. dict.keys() لیستی از کلیدهای دیکشنری را بر می گرداند.
  8. dict.setdefault(key, default = None) شبیه به get() می باشد، با این تفاوت که در صورتیکه کلید وجود نداشته باشد مقدار default را در آن قرار می دهد.
  9. dict.update(dict2) کلید ها و value های dict2 را به dict اضافه می کند.
  10. dict.values() لیستی از value های دیکشنری dict را بر می گرداند.