کاربران عزیز ، با عرض سلامو خسته نباشی خدمت شما خوبان ، با مبحث امروز ما درمورد نوع داده ای Dictionary در پایتون همراه بمانید.نوع داده ای dictionary در زبان همه منظوره ی پایتون شبیه به نوع جدول hash شده می باشد. آنها مانند associative arrays (آرایه های انجمنی) یا hash ها در perl هستند. دیکشنری ها می توانند هر نوعی از داده باشند، اما غالبا از نوع داده ی عددی یا رشته ای هستند. دیشکنری ها با کروشه یا کاراکتر {} تعریف می شوند و جهت دسترسی به مقادیر آن بایستی از آکولاد یا عملگر [] کمک گرفت.

در واقع دیکشنری مجموعه‌ای از جفت داده‌های به هم مرتبط می‌باشد.

در dictionary هر اسم یا کلید توسط تفکیک گر نقطه ویرگول از مقدار خود جدا می شود، آیتم ها نیز با ویرگول از هم تفکیک شده، سپس کل dictionary داخل کروشه محصور می گردد.

در پایتون، یک dictionary می تواند کاملا تهی باشد و هیچ مقداری داخل کروشه ی آن قرار نگیرد، بدین صورت: {}.

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

دسترسی به مقادیر در dictionary

به منظور دسترسی به المان های یک dictionary، لازم است از عملگر [] و اسم (کلید) المان مورد نظر استفاده کرد:

#!/usr/bin/python

dict = {‘Name’: ‘Zara’, ‘Age’: 7, ‘Class’: ‘First’};

print “dict[‘Name’]: “, dict[‘Name’]

print “dict[‘Age’]: “, dict[‘Age’]

خروجی:

dict[‘Name’]: Zara

dict[‘Age’]: 7

اگر سعی کنید به یک آیتم داده ای دیکشنری با کلیدی که عضو dictionary نیست دسترسی پیدا کنید، با خطا مواجه خواهید شد:

#!/usr/bin/python

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/python

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

حذف المان های dictionary

می توانید المان های یک dictionary را به صورت تکی پاک کنید یا تمامی محتویات آن را به صورت یکجا حذف نمایید. همچنین می توانید خود متغیر dictionary را به طور کلی و صریح حذف نمایید.

جهت حذف یک متغیر dictionary به صورت صریح، از دستور del استفاده می کنیم.

#!/usr/bin/python

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’]

نتیجه ی زیر را بدست می دهد. مشاهده می کنید که یک خطا رخ داده و آن مربوط به عدم وجود dictionary پس از اجرای دستور del dict می باشد.

dict[‘Age’]:

Traceback (most recent call last):

File “test.py”, line 8, in

print “dict[‘Age’]: “, dict[‘Age’];

TypeError: ‘type’ object is unsubscriptable

خصیصه ی کلیدهای dictionary

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

دو نکته ی بسیار مهم در رابطه با کلیدهای dictionary وجود دارد، که در زیر شرح داده شده:

۱٫ به ازای هر کلید نمی توان بیش از یک entry یا مقدار داشت، بدین معنی که یک کلید نمی تواند به هیچ وجه تکراری باشد. در صورت تخصیص دو کلید به یک مقدار، معمولا دومی به عنوان کلید انتخاب می شود. مثال:

#!/usr/bin/python

dict = {‘Name’: ‘Zara’, ‘Age’: 7, ‘Name’: ‘Manni’};

print “dict[‘Name’]: “, dict[‘Name’]

نتیجه:

dict[‘Name’]: Manni

۲٫ کلیدها بایستی تغییر ناپدیر باشند (پس از ایجاد تغییر نکنند)، بدین معنا که می توانید از رشته ها، اعداد یا tuple به عنوان کلید استفاده کنید، اما چیزی مانند [‘ key ‘] مجاز نیست. مثال:

#!/usr/bin/python

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

توابع و متدهای توکار Dictionary

شماره ی متد

تابع مورد نظر به همراه شرح عملکرد آن

۱

cmp(dict1, dict2)

المان های دو متغیر dictionary را با هم مقایسه می کند.

۲

len(dict)

طول یا تعداد کل آیتم های موجود در متغیر dictionary را برمی گرداند.

۳

str(dict)

معادل رشته ای یک متغیر dictionary را برمی گرداند. در واقع یک دیکشنری را به رشته تبدیل می کند.

۴

type(variable)

نوع متغیر ارسالی را بازمی گرداند. اگر متغیر پاس داده شده، dictionary بود در آن صورت، نوع را dictionary مشخص می کند.

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

شماره ی متد

شرح عملکرد متد

۱

dict.clear()

کلیه ی المان های متغیر dictionary را حذف می کند.

۲

dict.copy()

نسخه عینی (shallow copy) از متغیر dictionary بازمی گرداند.

در فرایند shallow copying، B تمامی مقادیر فیلد (field value) A را کپی می کند. اگر مقدار فیلد یک آدرس حافظه باشد، تنها آدرس حافظه را دانلود می کند و اگر مقدار فیلد یک نوع اولیه (primitive type) باشد در آن صورت مقدار نوع اولیه را کپی می کند.

۳

dict.fromkeys()

یک dictionary جدید بازمی گرداند که کلیدهای المان توسط پارامتر اول و مقادیر آن توسط پارامتر دوم تعیین می شود.

۴

dict.get(key, default=None)

این متد کلید مورد نظر که توسط پارامتر اول مشخص می شود را در dictionary می یابد، در صوت یافت نشدن مقدار مورد نظر، یک مقدار پیش فرض (که در پارامتر دوم تعریف می شود) تعیین می کنیم که آن را برمی گرداند.

۵

dict.has_key(key)

در صورت یافتن کلید مورد نظر در dictionary،که توسط پارامتر key مشخص می شود، مقدار true برمی گرداند و در غیر این صورت false را بازیابی می نماید.

۶

dict.items()

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

۷

dict.keys()

لیستی از کلیدهای متغیر dictionary را برمی گرداند.

۸

dict.setdefault(key, default=None)

عملکردی مشابه متد get() دارد، با این تفاوت که در صورت نیافتن مقدار مورد نظر، مقدار پیش فرض که در پارامتر دوم تعریف می شود را برمی گرداند.

۹

dict.update(dict2)

جفت های کلید و مقدار دیکشنری dict2 را به متغیر dict اضافه می کند.

۱۰

dict.values()

لیستی از مجموعه ی مقادیر موجود در dictionary را بازیابی می کند.