دیکشنری ها در پایتون یک ساختار داده هستند که مقادیر را به صورت جفتهای کلید: مقدار (key: value) ذخیره میکنند.
مثال:
همانطور که از مثال مشاهده میکنید، داده در دیکشنریها به صورت جفتهای کلید:مقدار ذخیره میشود که این امر سبب سهولت در جستجوی مقادیر میشود.
Dict = {1: 'datayad', 2: 'For', 3: 'you'} print(Dict)
خروجی:
{1: 'datayad', 2: 'For', 3: 'you'}
نحوه نوشتن (سینتکس – syntax) دیکشنری ها در پایتون
dict_var = {key1: value1, key2: value2, …..}
دیکشنری ها در پایتون (Dictionaries in Python) یک ساختار داده است که برای ذخیره مقادیر با فرمت کلید:مقدار استفاده میشود. این امر باعث متفاوت شدن آن با لیستها، تاپلها و آرایهها میشود؛ زیرا در دیکشنری هر کلید مقدار مرتبط خود را دارد.
توجه: با توجه به نسخه ۳.۷ پایتون به بعد، دیکشنریها ترتیب دارند و نمیتوانند مقادیر تکراری را در خود جای دهند.
چگونه یک دیکشنری ایجاد کنیم؟
در پایتون، میتوانید یک دیکشنری را با قرار دادن یک دنباله از عناصر داخل آکولاد {}، در حالی که توسط کاما جداشده اند و به صورت کلید: مقدار، ایجاد کنید.
همانطور که گفته شد در دیکشنری، مقادیر به صورت جفت هستند، یعنی هر عضو آن یک مقدار و یک کلید متناظر با آن مقدار را دارد.
مقادیر در دیکشنری میتوانند از هر نوع دادهای باشند و امکان تکرار آنها وجود دارد، در حالی که کلیدها نمیتوانند تکرار شوند و باید غیرقابل تغییر (immutable) باشند.
توجه: کلیدهای دیکشنری حساس به حالت حروف (case-sensitive) هستند، بنابراین نامهای مشابه با اختلاف حالت حروف به عنوان دو کلید متفاوت در نظر گرفته میشوند.
کد زیر نمایانگر ایجاد دیکشنری با انواع مختلف کلیدها است. دیکشنری اول از کلیدهای عددی استفاده میکند، و دیکشنری دوم از ترکیب کلیدهای رشتهای و عددی با مقادیر متناظر استفاده میکند. این مثال نشاندهنده انعطاف پذیری دیکشنریهای پایتون در کنار انواع مختلف دادهها به عنوان کلیدها است.
Dict = {1: 'datayad', 2: 'For', 3: 'datayad'} print("\nDictionary with the use of Integer Keys: ") print(Dict) Dict = {'Name': 'datayad', 1: [1, 2, 3, 4]} print("\nDictionary with the use of Mixed Keys: ") print(Dict)
خروجی:
Dictionary with the use of Integer Keys: {1: 'datayad', 2: 'For', 3: 'datayad'} Dictionary with the use of Mixed Keys: {'Name': 'datayad', 1: [1, 2, 3, 4]}
راههای مختلف ایجاد یک دیکشنری پایتون
- در پایتون، یک دیکشنری را میتوان با استفاده از تابع داخلی ()dict نیز ایجاد کرد.
- همچنین یک دیکشنری خالی را میتوان فقط با قرار دادن براکتها {} ایجاد کرد.
در کد زیر به روشهای مختلف ایجاد دیکشنریها در پایتون اشاره شده است. ابتدا یک دیکشنری خالی ایجاد میشود و سپس نشان داده میشود که چگونه می توان با استفاده از سازنده ()dict با جفتهای کلید-مقدار مشخص شده در براکتها ({}) و یا با یک لیست از تاپل ها دیکشنری ایجاد کرد.
my_dict = {} print("Empty Dictionary: ") print(my_dict) my_dict = dict({1: 'datayad', 2: 'For', 3: 'you'}) print("\nDictionary with the use of dict(): ") print(my_dict) my_dict = dict([(1, 'datayad'), (2, 'For')]) print("\nDictionary with each item as a pair: ") print(my_dict)
خروجی:
Empty Dictionary: {} Dictionary with the use of dict(): {1: 'datayad', 2: 'For', 3: 'you'} Dictionary with each item as a pair: {1: 'datayad', 2: 'For'}
پیچیدگیها برای ایجاد یک دیکشنری:
پیچیدگی زمانی: O(len(dict))
پیچیدگی فضایی: O(n)
دیکشنریهای تودرتو
مثال: در این کد یک دیکشنری تو در تو با نام ‘Dict’ که شامل چند سطح از جفتهای کلید و مقدار است، تعریف شده است. این دیکشنری شامل یک دیکشنری سطح اول با کلیدهای 1، 2 و 3 میشود. مقدار مرتبط با کلید 3 خودش نیز یک دیکشنری دیگر با کلیدهای ‘A’، ‘B’ و ‘C’ است.
این نشان میدهد که چگونه میتوان در پایتون از دیکشنریها استفاده کرد تا ساختارهای داده سلسله مراتبی ایجاد شوند.
Dict = {1: 'datayad', 2: 'For', 3: {'A': 'Welcome', 'B': 'To', 'C': 'datayad'}} print(Dict)
خروجی:
{1: 'datayad', 2: 'For', 3: {'A': 'Welcome', 'B': 'To', 'C': 'datayad'}}
افزودن عناصر به یک دیکشنری
افزودن عناصر به یک دیکشنری به چند روش ممکن است. میتوانید یک مقدار به یک دیکشنری به صورت تکی اضافه کنید، به این صورت که مقدار را به همراه کلید تعریف کنید، به عنوان مثال
`Dict[Key] = ‘Value’`.
بروزرسانی یک مقدار موجود در یک دیکشنری با استفاده از متد داخلی ()update نیز امکان پذیر است. همچنین، میتوانید مقادیر کلیدهای تو در تو را به یک دیکشنری موجود اضافه کنید.
توجه – در هنگام افزودن یک مقدار، اگر کلید-مقدار مورد نظر از قبل وجود داشته باشد، مقدار بهروزرسانی میشود و در غیر این صورت یک کلید جدید با مقدار متناظرش اضافه میشود.
مثال: اضافه کردن عناصر به دیکشنری پایتون با انواع دادههای مختلف
کد با یک دیکشنری خالی شروع میشود و سپس جفتهای کلید-مقدار به آن اضافه میشود. این کد نشان میدهد که چگونه میتوان عناصر را با انواع دادههای مختلف به دیکشنری اضافه کرد، مقدار یک کلید را بهروزرسانی کرد، و حتی دیکشنریهای تو در تو را درون دیکشنری اصلی جای داد. به طور کلی این کد نحوه کنترل دیکشنریها در پایتون را نشان میدهد.
Dict = {} print("Empty Dictionary: ") print(Dict) Dict[0] = 'datayad' Dict[2] = 'For' Dict[3] = 1 print("\nDictionary after adding 3 elements: ") print(Dict) Dict['Value_set'] = 2, 3, 4 print("\nDictionary after adding 3 elements: ") print(Dict) Dict[2] = 'Welcome' print("\nUpdated key value: ") print(Dict) Dict[5] = {'Nested': {'1': 'Life', '2': 'datayad'}} print("\nAdding a Nested Key: ") print(Dict)
خروجی:
Empty Dictionary: {} Dictionary after adding 3 elements: {0: 'datayad', 2: 'For', 3: 1} Dictionary after adding 3 elements: {0: 'datayad', 2: 'For', 3: 1, 'Value_set': (2, 3, 4)} Updated key value: {0: 'datayad', 2: 'Welcome', 3: 1, 'Value_set': (2, 3, 4)} Adding a Nested Key: {0: 'datayad', 2: 'Welcome', 3: 1, 'Value_set': (2, 3, 4), 5: {'Nested': {'1': 'Life', '2': 'datayad'}}}
پیچیدگیها برای افزودن عناصر به یک دیکشنری:
پیچیدگی زمانی: O(1)/O(n)
پیچیدگی فضایی: O(1)
دسترسی به عناصر یک دیکشنری
دسترسی با کلیدها
برای دسترسی به عناصر یک دیکشنری از نام کلید آن استفاده میشود. کلید میتواند درون کروشهها استفاده شود.
دسترسی به یک مقدار در دیکشنری پایتون
کد زیر نشان میدهد که چگونه به عناصر یک دیکشنری با استفاده از کلیدها دسترسی پیدا کنیم. این کد مقادیر مرتبط با کلیدهای ‘name’ و 1 را دسترسی میدهد و نشان میدهد که کلیدها میتوانند از انواع دادههای مختلف (رشته و عدد صحیح) باشند.
Dict = {1: 'datayad', 'name': 'For', 3: 'datayad'} print("Accessing a element using key:") print(Dict['name']) print("Accessing a element using key:") print(Dict[1])
خروجی:
Accessing a element using key: For Accessing a element using key: datayad
دسترسی با متد get
همچنین یک متد به نام ()get وجود دارد که در دسترسی به عناصر یک دیکشنری به شما کمک میکند. این متد یک کلید را به عنوان آرگومان میپذیرد و مقدار متناظر با آن را برمیگرداند.
پیچیدگیها برای دسترسی به عناصر در یک دیکشنری:
پیچیدگی زمانی: O(1)
پیچیدگی فضایی: O(1)
مثال: دسترسی به یک مقدار در دیکشنری با استفاده از متد ()get در پایتون
کد زیر نشان میدهد که چگونه با استفاده از متد ()get به یک عنصر دیکشنری دسترسی پیدا کنیم. این کد مقدار مرتبط با کلید 3 در دیکشنری ‘Dict’ را بازیابی و چاپ میکند. این متد یک راه ایمن برای دسترسی به مقادیر دیکشنری فراهم میکند و از بروز خطا (KeyError) در صورت عدم وجود کلید جلوگیری میکند.
Dict = {1: 'datayad', 'name': 'For', 3: 'datayad'} print("Accessing a element using get:") print(Dict.get(3))
خروجی:
Accessing a element using get: datayad
دسترسی به یک عنصر در یک دیکشنری تو در تو
برای دسترسی به مقدار هر کلید در دیکشنری تو در تو از دستورنوشتاری [] استفاده کنید.
مثال: این کد با دیکشنریهای تو در تو کار میکند. ابتدا به دیکشنری تو در تو با کلید ‘Dict1’ دسترسی پیدا کرده و آن را چاپ میکند. سپس، با جستجو در دیکشنریهای تو در تو به یک مقدار خاص دسترسی پیدا کرده و آن را چاپ میکند.
در نهایت، مقدار مرتبط با کلید ‘Name’ در دیکشنری تو در تو زیر ‘Dict2’ را بازیابی و چاپ میکند.
Dict = {'Dict1': {1: 'datayad'}, 'Dict2': {'Name': 'For'}} print(Dict['Dict1']) print(Dict['Dict1'][1]) print(Dict['Dict2']['Name'])
خروجی:
{1: 'datayad'} datayad For
حذف عناصر با استفاده از کلیدواژه ‘del’
میتوانید به شکل زیر با استفاده از کلیدواژه del عناصر دیکشنری را حذف کنید.
مثال: کد زیر یک دیکشنری تعریف میکند، محتوای اصلی آن را چاپ میکند، و سپس با استفاده از دستور ‘del’ عنصر مرتبط با کلید 1 را حذف میکند.
پس از حذف، دیکشنری بهروزرسانی شده را چاپ میکند تا نشان دهد که عنصر مشخص شده حذف شده است.
Dict = {1: 'datayad', 'name': 'For', 3: 'you'} print("Dictionary =") print(Dict) del(Dict[1]) print("Data after deletion Dictionary=") print(Dict)
خروجی:
Dictionary ={1: 'datayad', 'name': 'For', 3: 'you'} Data after deletion Dictionary={'name': 'For', 3: 'you'}
متدهای دیکشنری
در زیر، لیستی از توابع داخلی دیکشنری ها در پایتون به همراه توضیحات آنها آمده است. شما میتوانید از این توابع برای انجام عملیات مختلف بر روی یک دیکشنری استفاده کنید.
متد |
توضیحات |
dic.clear() |
حذف تمام عناصر از دیکشنری |
dict.copy() |
برگرداندن یک نسخه از دیکشنری |
dict.get(key, default=”None”) |
بازگرداندن مقدار کلید مشخص شده؛ در صورت عدم وجود، از مقدار پیشفرض استفاده میکند |
dict.items() |
بازگرداندن یک لیست که شامل یک تاپل برای هر جفت کلید-مقدار است |
dict.keys() |
بازگرداندن یک لیست که شامل کلیدهای دیکشنری است |
dict.update(dict2) |
بهروزرسانی دیکشنری با جفتهای مشخصشده کلید-مقدار |
dict.values() |
بازگرداندن یک لیست از همه مقادیر دیکشنری |
pop() |
حذف عنصر با کلید مشخص شده |
popItem() |
حذف آخرین جفت کلید-مقدار واردشده |
dict.setdefault(key, default=”None”) |
تنظیم کلید به مقدار پیشفرض اگر کلید در دیکشنری مشخص نشده باشد |
dict.has_key(key) |
بازگرداندن درست اگر دیکشنری حاوی کلید مشخص شده باشد |
dict.get(key, default=”None”) |
برای گرفتن مقدار مشخص شده کلید تعیین شده استفاده میشود |
عملیاتهای چندگانه در دیکشنری در پایتون
کد زیر با یک دیکشنری به نام ‘dict1’ شروع میشود و سپس یک کپی با نام ‘dict2’ ایجاد میکند. سپس چندین عملیات مختلف را روی دیکشنری نشان میدهد: پاک کردن ‘dict1’، دسترسی به مقادیر، بازیابی جفتهای کلید-مقدار و کلیدها، حذف جفتهای کلید-مقدار خاص، بهروزرسانی مقدار، و بازیابی مقادیر.
این عملیاتها نشان میدهند که چگونه با دیکشنریها در پایتون کار کنید.
dict1 = {1: "Python", 2: "Java", 3: "Ruby", 4: "Scala"} dict2 = dict1.copy() print(dict2) dict1.clear() print(dict1) print(dict2.get(1)) print(dict2.items()) print(dict2.keys()) dict2.pop(4) print(dict2) dict2.popitem() print(dict2) dict2.update({3: "Scala"}) print(dict2) print(dict2.values())
خروجی:
{1: 'Python', 2: 'Java', 3: 'Ruby', 4: 'Scala'} {} Python dict_items([(1, 'Python'), (2, 'Java'), (3, 'Ruby'), (4, 'Scala')]) dict_keys([1, 2, 3, 4]) {1: 'Python', 2: 'Java', 3: 'Ruby'} {1: 'Python', 2: 'Java'} {1: 'Python', 2: 'Java', 3: 'Scala'} dict_values(['Python', 'Java', 'Scala'])
به طور کامل در مورد دیکشنری ها در پایتون در این درس آموزش رایگان پایتون در دیتایاد توضیح دادیم، تعریف و کاربردهای آن را بررسی کردیم و روشهای مختلف استفاده از دیکشنری با مثالهایی متنوع را مشاهده کردیم. دیکشنری یک ساختار داده مهم برای ذخیره دادهها در پایتون است و با تاپلها و لیستها بسیار متفاوت است.