نوع داده ای فرهنگ لغت یا دیکشنری (Dictionary) در پایتون (Python)

نوع داده ای فرهنگ لغت یا دیکشنری (Dictionary) در پایتون (Python)

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

نوع داده های لیست ها، tuple ها و set ها را برای شما شرح دادیم و حال به سراغ آخرین نوع از این نوع های داده ای یعنی فرهنگ لغت (Dictionary) ها آمدیم تا پرونده این نوع های داده ای را ببندیم.

نوع داده ای فرهنگ لغت پایتون برای ذخیره داده های چند مقداری به صورت key : value می باشد.

نوع داده ای دیکشنری پایتون همه ویژگی های لیست ها را دارد جز اینکه مقدار تکراری نمی پذیرد.

زمان مطالعه: 3 دقیقه
بازدید: 1688
پرسش و پاسخ: 0

نکته: در نسخه 3.6  پایتون و قبل تر از آن، این نوع داده ای مرتب نبود و در نسخه 3.7  پایتون به صورت مرتب شده تغییر کرد.

مقادیر نوع داده ای فرهنگ لغت درون یک جفت کورشه ({}) و در قالب key : value نوشته می شوند.

مثال: در زیر یک نوع داده ای دیکشنری ایجاد و در خروجی چاپ شده است.

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
print(thisdict)

نوع داده ای فرهنگ لغت یا دیکشنری در پایتون (Python)

آیتم های نوع داده ای dictionary

آیتم های این نوع داده ای ترتیبی، تغییر پذیر هستند و مقادیر تکراری قبول نمی کنند.

آیتم های این نوع داده ای در قالب key : value ارائه می شوند و با استفاده از نام key میتوان به آیتم های آن دسترسی پیدا کرد.

مثال: در زیر مقدار کلید “brand” را در خروجی چاپ می کند.

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
print(thisdict["brand"])

آیتم های نوع داده ای dictionary در پایتون (Python)

ترتیبی یا بی نظم؟

نکته: همانطور که در بالا هم گفتیم در نسخه 3.6  پایتون و قبل تر از آن، این نوع داده ای مرتب نبود و در نسخه 3.7  پایتون به صورت مرتب شده تغییر کرد.

وقتی میگوییم نوع داده ای ترتیبی است به این معنی است که مقادیر و آیتم های آن به همان ترتیبی که تعریف شده اند در خروجی چاپ می شوند و نمی توان ترتیب آن ها را تغییر داد.

وقتی هم می گوییم نوع داده ای نا منظم است به این معنی است که نمیتوان با استفاده از ایندکس به مقادیر آن دسترسی پیدا کرد.

تغییر پذیر

نوع داده ای Dictionary تغییر پذیر هستند، به این معنی که پس از ایجاد این نوع داده ای می توان آیتم های آن را تغییر داد، آیتم جدیدی ایجاد کرد و یا حتی آیتمی از آن را حذف کرد.

مجاز نبودن آیتم های تکراری

نوع داده ای Dictionary نمی توانند دو آیتم با نام key یکسان داشته باشند. اگر این اتفاق بیوفتد و نام key یکسان در آیتم ها تعریف کنید آیتم تکراری مقدارش بازنویسی خواهد شد. به مثال زیر دقت کنید.

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964,
  "year": 2020
}
print(thisdict)

مجاز نبودن آیتم های تکراری دیکشنری در پایتون (Python)

طول دیکشنری ها

برای به دست آوردن تعداد آیتم های این نوع داده ای از تابع len استفاده می کنیم.

مثال: در این مثال تعداد آیتم های نوع داده ای Dictionary در خروجی چاپ شده است.

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964,
  "year": 2020
}
print(len(thisdict))

طول دیکشنری ها در پایتون (Python)

نوع های داده مجاز در Dictionaries

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

در مثال زیر ما برای تعریف آیتم های Dictionaries از چهار نوع رشته ای، عددی و بولی و لیست استفاده کردیم.

thisdict = {
  "brand": "Ford",
  "electric": False,
  "year": 1964,
  "colors": ["red", "white", "blue"]
}

نوع های داده مجاز در دیکشنری در پایتون (Python)

تابع type

از دیدگاه پایتون، Dictionary ها به عنوان اشیا با نوع داده ای Dict تعریف می شوند.

<class 'dict'>

مثال: در این مثال نوع داده ای Dictionary زیر در خروجی چاپ می شود.

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
print(type(thisdict))

تابع ()type نوع داده ای فرهنگ لغت در پایتون (Python)

دسترسی به آیتم های دیکشنری در پایتون (Python)

با مراجعه به نام key یک Dictionary در داخل یک جفت براکت می توانید به آیتم های آن دسترسی پیدا کنید.

مثال: در این مثال به آیتمی با کلید واژه “model” دسترسی پیدا کرده است.

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
x = thisdict["model"]

دسترسی به آیتم های Dictionaries در پایتون (Python)

همچنین متدی به نام get وجود دارد که همین نتیجه را برمیگرداند.

x = thisdict.get("model")

دسترسی به آیتم های دیکشنری در پایتون (Python) با متد ()get

دریافت key ها در Dictionaries

متد keys لیستی از تمام کلید های دیکشنری را به ما می دهد.

مثال: در زیر لیست تمام key ها در Dictionary مورد نظر را برای ما برگشت می دهد.

x = thisdict.keys()

دریافت key ها در Dictiionaries در پایتون (Python)

لیست key ها نمای این نوع داده ای است، به این معنی که هر گونه تغییر در Dictionaries باعث ایجاد تغییر در لیست key ها می شود.

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

car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.keys()
print(x) #before the change
car["color"] = "white"
print(x) #after the change

دریافت key ها در دیکشنری در پایتون (Python)

دریافت value ها در دیکشنری 

متد value لیستی از تمام value های Dictionary را به ما می دهد.

مثال: در زیر لیست تمام value ها در دیکشنری مورد نظر را برای ما برگشت می دهد.

x = thisdict.values()

دریافت value ها در دیکشنری در پایتون (Python)

لیست value ها نمای نوع داده ای Dictionary است، به این معنی که هر گونه تغییر در Dictionaries باعث ایجاد تغییر در لیست value ها می شود.

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

car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.values()
print(x) #before the change
car["year"] = 2020
print(x) #after the change

دریافت value ها در Dictiionaries در پایتون (Python)

حتی اگر key مورد نظر وجود نداشته باشد، آن key و value را ایجاد می کند و لیست value ها می شود.

car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.values()
print(x) #before the change
car["color"] = "red"
print(x) #after the change

دریافت value ها در دیکشنری در پایتون (Python)

دریافت آیتم های دیکشنری

متد items هر آیتم را در Dictionary به عنوان یک چندتایی (tuple) در یک لیست برمیگرداند.

مثال: در این مثال هر آیتم به عنوان یک جفت مقدار key : value برگشت داده می شود.

x = thisdict.items()

دریافت آیتم های دیکشنری در پایتون (Python)

لیست برگشتی نمای نوع داده ای دیکشنری است، به این معنی که هر گونه تغییر در Dictionaries باعث ایجاد تغییر در لیست برگشتی می شود.

مثال: در Dictionary اصلی تغییر ایجاد می شود و همین باعث بروز رسانی کل لیست برگشتی می شود.

car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.items()
print(x) #before the change
car["year"] = 2020
print(x) #after the change

دریافت آیتم های دیکشنری در پایتون (Python)

مثال: در این مثال آیتم جدیدی به لیست اضافه می شود و لیست برگشتی بروز می شود.

car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.items()
print(x) #before the change
car["color"] = "red"
print(x) #after the change

دریافت آیتم های Dictionaries در پایتون (Python)

بررسی وجود key

برای بررسی وجود key در دیکشنری مشخص شده از کلمه کلیدی in استفاده می کنیم.

مثال: در این مثال بررسی می کند که آیا key با نام “model” در Dictionary مورد نظر وجود دارد یا خیر، در صورت وجود رشته مورد نظر را در خروجی چاپ می کند.

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
if "model" in thisdict:
  print("Yes, 'model' is one of the keys in the thisdict dictionary")

بررسی وجود key یک دیکشنری در پایتون (Python)

تغییر دادن آیتم های دیکشنری در پایتون (Python)

شما می توانید با مراجعه به نام key آن آیتم مقدار آن را تغییر دهید.

مثال: در این مثال سال را به 2018  تغییر می دهد.

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
thisdict["year"] = 2018

تغییر دادن آیتم های دیکشنری در پایتون (Python)

به روز رسانی Dictionaries

متد update فرهنگ لغت را از مقادیری که در آرگومان داده شده به روز رسانی می کند

آرگومان باید حتما یک dictionary و یا یک شی قابل پیمایش ما فرمت قالب key : value باشد.

مثال: در این مثال سال ماشین را با متد update تغییر می دهد.

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
thisdict.update({"year": 2020})

به روز رسانی (update) کردن آیتم های دیکشنری در پایتون (Python)

اضافه کردن به آیتم های Dictionary در پایتون (Python)

برای اضافه کردن یک آیتم جدید به این نوع داده ای باید یک key جدید تعریف کنید و value به آن اختصاص دهید.

مثال: در زیر یک آیتم جدید به نام “color” با مقدار “red” به دیکشنری اضافه شده است.

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
thisdict["color"] = "red"
print(thisdict)

اضافه کردن به آیتم های Dictionary در پایتون (Python)

شما همچنین می توانید از متد update که در بالا گفته شد، برای اضافه کردن آیتم به Dictionaries استفاده کنید.

مثال: اضافه کردن آیتم جدید با متد update به دیکشنری 

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
thisdict.update({"color": "red"})

اضافه کردن به آیتم های دیکشنری در پایتون (Python)

حذف آیتم های دیکشنری در پایتون (Python)

روش های مختلفی در پایتون وجود دارد که با آن ها می توانید آیتم های یک Dictionary را حذف کنید که در ادامه به بررسی آن ها می پردازیم.

متد pop

این متد آیتم مورد نظر شما را با نام key آن حذف می کند.

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
thisdict.pop("model")
print(thisdict)

حذف آیتم های دیکشنری در پایتون (Python) با متد ()pop

متد popitem

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

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
thisdict.popitem()
print(thisdict)

حذف آیتم های دیکشنری در پایتون (Python) با متد ()popitem

کلمه کلیدی del

در این روش آیتم را با نام key مشخص شده حذف می کند.

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
del thisdict["model"]
print(thisdict)

حذف آیتم های دیکشنری در پایتون (Python) با کلمه کلیدی del

این کلمه کلیدی همچنین می تواند یک dictionary را به طور کامل حذف کند.

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
del thisdict
print(thisdict) #this will cause an error because "thisdict" no longer exists.

حذف آیتم های Dictionary در پایتون (Python) با کلمه کلیدی del

چون بعد از حذف کامل dictionary دیگر چیزی برای نمایش وجود ندارد پیغام خطا چاپ می کند.

متد clear

این متد تمام آیتم های دیکشنری را پاک می کند اما خود dictionary حذف نمی شود.

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
thisdict.clear()
print(thisdict)

حذف آیتم های دیکشنری در پایتون (Python) با متد ()clear

حلقه های Dictionaries در پایتون (Python)

شما می توانید یک Dictionary را با حلقه for پیمایش کنید.

هنگام پیمایش یک دیکشنری می توانید مقادیر آن را از طریق کلید واژه (key) برگردانید، اما متدهایی نیز برای این کار وجود دارد که در ادامه آن ها را بررسی می کنیم.

مثال: در این مثال لیست key ها را به ترتیب یکی یکی برمیگرداند.

for x in thisdict:
  print(x)

حلقه های Dictionaries در پایتون (Python)

مثال: در این مثال لیست value ها را به ترتیب یکی یکی برمیگرداند.

for x in thisdict:
  print(thisdict[x])

حلقه های دیکشنری در پایتون (Python)

متد values

مثال: همچنین می توانید با متد values مقادیر (value) یک Dictionary را برگردانید.

for x in thisdict.values():
  print(x)

حلقه های دیکشنری در پایتون (Python) با متد ()values

متد keys

مثال: برای برگشت کلید واژه (key) های یک Dictionary می توانید از متد keys استفاده کنید.

for x in thisdict.keys():
  print(x)

حلقه های Dictionaries در پایتون (Python) با متد ()keys

متد items

مثال: برای برگشت کلید واژه و مقدار (key : value) می توانید از متد items() استفاده کنید.

for x, y in thisdict.items():
  print(x, y)

حلقه های دیکشنری در پایتون (Python) با متد ()items

کپی کردن یک Dictionary در پایتون (Python)

شما نمی توانید با نوشتن dict1 = dict2 به راحتی یک دیکشنری را کپی کنید، برای اینکه dic2 فقط یک مرجع از dict1 خواهد بود و تغییر های ایجاد شده در dict1 به طور خودکار در dict2 هم اعمال می شوند.

روش هایی برای تهیه کپی از یک dictionary وجود دارد که با هم آن ها را بررسی می کنیم.

متد copy

یکی از راه های تهیه یک کپی از یک دیکشنری استفاده از متد copy است.

مثال: در زیر یک کپی از  Dictionary با متد copy ایجاد شده است.

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
mydict = thisdict.copy()
print(mydict)

کپی کردن یک Dictionary در پایتون (Python) با متد ()copy

متد dict

یکی دیگر از راه های ایجاد یک کپی از یک دیکشنری استفاده از متد dict است.

مثال: در زیر یک کپی از  Dictionary با متد dict ایجاد شده است.

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}
mydict = dict(thisdict)
print(mydict)

کپی کردن یک دیکشنری در پایتون (Python) با متد ()dict

دیکشنری های تو در تو در پایتون (Python)

در پایتون یک دیکشنری خود می تواند شامل چندین Dictionary باشد و در اصطلاح به این عمل تو در تو (nested) نویسی Dictionary ها گفته می شود.

مثال: در زیر یک دیکشنری ایجاد شده که خود دارای 3 Dictionary دیگر است.

myfamily = {
  "child1" : {
    "name" : "Emil",
    "year" : 2004
  },
  "child2" : {
    "name" : "Tobias",
    "year" : 2007
  },
  "child3" : {
    "name" : "Linus",
    "year" : 2011
  }
}

Dictionary های تو در تو در پایتون (Python)

همچنین می توانید چند دیکشنری را به یک Dictionary اضافه کنید.

مثال: در زیر 3 Dictionary ایجاد شده و سپس همه آن ها به یک Dictionary جدید اضافه شده اند.

child1 = {
  "name" : "Emil",
  "year" : 2004
}
child2 = {
  "name" : "Tobias",
  "year" : 2007
}
child3 = {
  "name" : "Linus",
  "year" : 2011
}
myfamily = {
  "child1" : child1,
  "child2" : child2,
  "child3" : child3
}

دیکشنری های تو در تو در پایتون (Python)

متد های دیکشنری در پایتون (Python)

پایتون مجموعه ای از متدهای داخلی دارد که می توانید از آن ها برای ایجاد تغییرات در Dictionaries استفاده کنید که در جدول زیر به طول خلاصه وار آن ها را توضیح داده ایم.

متد های Dictionary در پایتون (Python)
متد توضیحات
Clear پاک کردن تمام آیتم های یک فرهنگ لغت
Copy ایجاد یک کپی از یک فرهنگ لغت
Fromkeys برگشت دادن یک فرهنگ لغت با کلید و مقدار های مشخص شده
Get برگشت دادن یک مقدار از یک کلید مشخص
Items یک لیست چندتایی شامل کلید و مقدار مشخص شده را برمیگرداند
Keys لیستی را که شامل همه کلید های یک فرهنگ لغت است برمیگرداند
Pop حذف یک آیتم با کلید مشخص شده
Popitem حذف آخرین کلید  و مقدار از یک فرهنگ لغت
Setdefault مقدار کلید مشخص شده را برمی گرداند و اگر کلید وجود نداشت کلید را با مقدار مشخص شده وارد کنید
Update فرهنگ لغت را با مقدار و کلید مشخص شده به روز می کند
Values لیستی را که شامل همه مقدار های یک فرهنگ لغت است برمیگرداند
بهزاد میرزازاده
مسیر درست با پرسش های درست ساخته می شود

مشاهده تمام مطالب نویسنده