دیکشنری در پایتون، مجموعهای بدون ترتیب از دادهها است که برای ذخیرهی مقادیر به شکل دو به دو استفاده میشود. ساختار کلی دیکشنری در پایتون، مانند دیکشنریهای معمولی است؛ به این شکل که دیکشنری در پایتون به صورت کلید:مقدار (key:value) تعریف میشود، که در واقع کلید مشابه کلمات، و مقدار مشابه توضیحات آن کلمه در دیکشنری است. در ادامهی این بخش از آموزش پایتون مقدماتی، با ویژگیهای دیکشنری و توابع مربوط به آن آشنا خواهید شد.
دیکشنری در پایتون
دیکشنری مجموعهای بدون ترتیب، غیرقابل تغییر و فهرستبندی شده است. دیکشنری در پایتون، با علامت آکولاد
{} مشخص میشود و اعضای آن به صورت key:value تعریف میشوند.
مثال #۱: ساخت یک دیکشنری و نمایش آن
1 2 3 4 5 |
carInfo = {"brand": "Ford", "model": "Mustang", "year": 1964 } print(carInfo) |
خروجی #۱:
1 |
{'brand': 'Ford', 'model': 'Mustang', 'year': 1964} |
دسترسی به اعضای دیکشنری
میتوانید با فراخوانی نام اعضای دیکشنری درون براکت
[]، به آنها دسترسی پیدا کنید.
مثال #۲: دریافت مقدار model در مثال #۱
1 2 3 4 5 |
carInfo = {"brand": "Ford", "model": "Mustang", "year": 1964 } print(carInfo["model"]) |
خروجی #۲:
1 |
Mustang |
روش دیگری نیز برای این کار وجود دارد که نتیجهی یکسانی دارد؛ استفاده از متد
()get.
مثال #۳: متد
()get برای دسترسی به اعضای دیکشنری
12345
carInfo = {"brand": "Ford", "model": "Mustang", "year": 1964 }print(carInfo.get("model"))
خروجی #۳:
1
Mustang
تغییر مقادیر در دیکشنری
با فراخوانی نام یک عضو، میتوانید مقدار مربوط به آن را تغییر دهید.
مثال #۴: تغییر سال در مثال #۱ به ۲۰۱۸
1 2 3 4 5 6 7 |
carInfo = {"brand": "Ford", "model": "Mustang", "year": 1964 } carInfo["year"] = 2018 print(carInfo) |
خروجی #۴:
1 |
{'brand': 'Ford', 'model': 'Mustang', 'year': 2018} |
استفاده از حقله for در دیکشنری
با دستور
for در یک دیکشنری میتوانید حلقهای ایجاد کنید. کارهای مختلفی میتوان با استفاده از حلقه در دیکشنریها انجام داد که در مثالهای بعد با آنها آشنا خواهید شد.
مثال #۵: نمایش همهی اعضای داخل دیکشنری
1 2 3 4 5 6 7 |
carInfo = {"brand": "Ford", "model": "Mustang", "year": 1964 } for x in carInfo: print(x) |
خروجی #۵:
1 2 3 |
brand model year |
مثال #۶: نمایش همهی مقادیر داخل دیکشنری
1 2 3 4 5 6 7 |
carInfo = {"brand": "Ford", "model": "Mustang", "year": 1964 } for x in carInfo: print(carInfo[x]) |
خروجی #۶:
1 2 3 |
Ford Mustang 1964 |
مثال #۷: با متد ()value نیز میتوانید مقادیر یک دیکشنری را برگردانید.
1 2 3 4 5 6 7 |
carInfo = {"brand": "Ford", "model": "Mustang", "year": 1964 } for x in carInfo.values(): print(x) |
خروجی #۷:
1 2 3 |
Ford Mustang 1964 |
مثال #۸: شما همچنین میتوانید با متد ()items در اعضا و مقادیر، به صورت همزمان حلقه ایجاد کنید.
1 2 3 4 5 6 7 |
carInfo = {"brand": "Ford", "model": "Mustang", "year": 1964 } for x, y in carInfo.items(): print(x, y) |
خروجی #۸:
1 2 3 |
brand Ford model Mustang year 1964 |
با حلقهی for و ویژگیهای آن در بخشهای آینده آشنا خواهید شد.
بررسی وجود یک عضو در دیکشنری
برای بررسی وجود یک عضو خاص در دیکشنری، از عبارت
in استفاده کنید.
مثال #۹: بررسی وجود
'model' در دیکشنری
1 2 3 4 5 6 7 |
carInfo = {"brand": "Ford", "model": "Mustang", "year": 1964 } if "model" in carInfo: print("Yes, 'model' is one of the keys in the carInfo dictionary") |
خروجی #۹:
1 |
Yes, 'model' is one of the keys in the carInfo dictionary |
در این مثال، با استفاده از شرط if بررسی کردیم که آیا مقدار 'model' به عنوان یک key در دیکشنری وجود دارد یا خیر. در آینده با شرط if و ویژگیهای آن بیشتر آشنا خواهید شد.
طول دیکشنری
برای بررسی تعداد کلی عناصر یک دیکشنری (جفتهای key:value)، از تابع
()len استفاده کنید.
مثال #۱۰: نمایش تعداد عناصر یک دیکشنری
1 2 3 4 5 6 |
carInfo = {"brand": "Ford", "model": "Mustang", "year": 1964 } print(len(carInfo)) |
خروجی #۱۰:
1 |
3 |
همانطور که انتظار میرفت، سه جفت key:value در دیکشنری carInfo وجود دارد.
افزودن عنصر به دیکشنری
این کار با افزودن یک عضو جدید و مقدار دهی به آن انجام میشود. در مثال زیر این موضوع را بررسی میکنیم.
مثال #۱۱: افزودن عضو
'color' با مقدار
'red'
1 2 3 4 5 6 |
carInfo = {"brand": "Ford", "model": "Mustang", "year": 1964 } carInfo["color"] = "red" print(carInfo) |
خروجی #۱۱:
1 |
{'brand': 'Ford', 'model': 'Mustang', 'year': 1964, 'color': 'red'} |
حذف یک عضو دیکشنری
راههای متعددی برای حذف یک عضو دیکشنری در پایتون وجود دارد.
مثال #۱۲: متد
()pop عنصری با یک عضو خاص را حذف میکند.
1 2 3 4 5 6 |
carInfo = {"brand": "Ford", "model": "Mustang", "year": 1964 } carInfo.pop("model") print(carInfo) |
خروجی #۱۲:
1 |
{'brand': 'Ford', 'year': 1964} |
مثال #۱۳: متد ()popitem آخرین عنصر اضافه شده را حذف میکند. (در نسخههای قبل از ۳.۷ پایتون، یک عنصر تصادفی حذف میشود)
1 2 3 4 5 6 |
carInfo = {"brand": "Ford", "model": "Mustang", "year": 1964 } carInfo.popitem() print(carInfo) |
خروجی #۱۳:
1 |
{'brand': 'Ford', 'model': 'Mustang'} |
مثال #۱۴: کلیدواژه del عنصری با یک عضو مشخص را حذف میکند.
1 2 3 4 5 6 |
carInfo = {"brand": "Ford", "model": "Mustang", "year": 1964 } del carInfo["model"] print(carInfo) |
خروجی #۱۴:
1 |
{'brand': 'Ford', 'year': 1964} |
مثال #۱۵: کلمه کلیدی del همچنین میتواند به طور کامل دیکشنری را حذف کند.
1 2 3 4 5 6 |
carInfo = {"brand": "Ford", "model": "Mustang", "year": 1964 } del carInfo print(carInfo) #this will cause an error because "thisdict" no longer exists. |
خروجی #۱۵: به دلیل اینکه این دیکشنری دیگر وجود ندارد، خطا دریافت خواهیم کرد.
1 |
NameError: name 'carInfo' is not defined |
مثال #۱۶: متد ()clear دیکشنری را کاملا تهی میکند.
1 2 3 4 5 6 |
carInfo = {"brand": "Ford", "model": "Mustang", "year": 1964 } carInfo.clear() print(carInfo) |
خروجی #۱۶:
1 |
{} |
کپی کردن دیکشنری در پایتون
شما نمیتوانید تنها با نوشتن
dict2 = dict1 اقدام به تکثیر دیکشنری کنید؛ زیرا
dict2 فقط مرجعی برای
dict1 خواهد شد و تغییرات اعمالی بر
dict1 به صورت خودکار بر
dict2 نیز اعمال میشوند.
روشهایی دیگری برای کپی و تکثیر دیکشنریها وجود دارد؛ یکی از این روشها استفاده از متد پیشفرض
()copy در دیکشنری است.
مثال #۱۷:
1 2 3 4 5 6 |
carInfo = {"brand": "Ford", "model": "Mustang", "year": 1964 } myDict = carInfo.copy() print(myDict) |
خروجی #۱۷:
1 |
{'brand': 'Ford', 'model': 'Mustang', 'year': 1964} |
راه دیگر برای کپی کردن یک دیکشنری، استفاده از تایع پیشفرض
()dict است.
مثال #۱۸:
1 2 3 4 5 6 |
carInfo = {"brand": "Ford", "model": "Mustang", "year": 1964 } myDict = dict(carInfo) print(myDict) |
خروجی #۱۸:
1 |
{'brand': 'Ford', 'model': 'Mustang', 'year': 1964} |
دیکشنریهای تو در تو
یک دیکشنری میتواند شامل چندین دیکشنری باشد که به آن دیکشنری تو در تو میگوییم.
مثال #۱۹: یک دیکشنری شامل سه دیکشنری درون آن
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
myfamily = { "child1" : { "name" : "Sheldon", "birthYear" : 2004 }, "child2" : { "name" : "Leonard", "birthYear" : 2007 }, "child3" : { "name" : "Howard", "birthYear" : 2011 } } print(myfamily) |
خروجی #۱۹:
1 |
{'child1': {'name': 'Sheldon', 'birthYear': 2004}, 'child2': {'name': 'Leonard', 'birthYear': 2007}, 'child3': {'name': 'Howard', 'birthYear': 2011}} |
همچنین میتوانید دیکشنریهایی که از قبل وجود داشتهاند را داخل دیکشنری دیگری قرار دهید.
مثال #۲۰:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
child1 = { "name" : "Sheldon", "birthYear" : 2004 } child2 = { "name" : "Leonard", "birthYear" : 2007 } child3 = { "name" : "Howard", "birthYear" : 2011 } myfamily = { "child1" : child1, "child2" : child2, "child3" : child3 } print(myfamily) |
خروجی #۲۰:
1 |
{'child1': {'name': 'Sheldon', 'birthYear': 2004}, 'child2': {'name': 'Leonard', 'birthYear': 2007}, 'child3': {'name': 'Howard', 'birthYear': 2011}} |
تابع ()dict برای ساخت دیکشنری
با استفاده از تابع
()dict نیز میتوانید دیکشنری ایجاد کنید.
مثال #۲۱:
1 2 |
carInfo = dict(brand = "Ford", model = "Mustang", year = 1964) print(carInfo) |
خروجی #۲۱:
1 |
{'brand': 'Ford', 'model': 'Mustang', 'year': 1964} |
توجه: در اینجا اعضا به صورت رشته داخل " " نیستند و انتصاب با علامت = صورت گرفته است.
متدهای پیشفرض پایتون برای دیکشنری
متد | توضیحات متد |
()copy | یک کپی از دیکشنری را بر میگرداند |
()clear | همهی عناصر دیکشنری را حذف میکند |
()fromkeys | یک دیکشنری با اعضا و مقادیر مشخص بر میگرداند |
()get | مقدار عضو مشخص شده را بر میگرداند |
()items | یک لیست شامل تاپل برای هر جفت مقدار و اعضا بر میگرداند |
()keys | یک لیست شامل اعضای دیکشنری را بر میگرداند |
()pop | یک عنصر با عضو مشخص را حذف میکند |
()popitem | آخرین جفت عضو و مقدار وارد شده را حذف میکند |
()setdefault | مقدار یک عضو خاص را بر میگرداند و اگر چنین عضوی نبود، یک عضو با این مقادیر اضافه میکند |
()update | با جفت عضو و مقدار مشخص، دیکشنری را به روزرسانی میکند |
()values | یک لیست از همهی مقادیر دیکشنری بر میگرداند |
عالییییی بود