نکته: در نسخه 3.6 پایتون و قبل تر از آن، این نوع داده ای مرتب نبود و در نسخه 3.7 پایتون به صورت مرتب شده تغییر کرد.
مقادیر نوع داده ای فرهنگ لغت درون یک جفت کورشه ({}) و در قالب key : value نوشته می شوند.
مثال: در زیر یک نوع داده ای دیکشنری ایجاد و در خروجی چاپ شده است.
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(thisdict)
آیتم های نوع داده ای dictionary
آیتم های این نوع داده ای ترتیبی، تغییر پذیر هستند و مقادیر تکراری قبول نمی کنند.
آیتم های این نوع داده ای در قالب key : value ارائه می شوند و با استفاده از نام key میتوان به آیتم های آن دسترسی پیدا کرد.
مثال: در زیر مقدار کلید “brand” را در خروجی چاپ می کند.
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(thisdict["brand"])
ترتیبی یا بی نظم؟
نکته: همانطور که در بالا هم گفتیم در نسخه 3.6 پایتون و قبل تر از آن، این نوع داده ای مرتب نبود و در نسخه 3.7 پایتون به صورت مرتب شده تغییر کرد.
وقتی میگوییم نوع داده ای ترتیبی است به این معنی است که مقادیر و آیتم های آن به همان ترتیبی که تعریف شده اند در خروجی چاپ می شوند و نمی توان ترتیب آن ها را تغییر داد.
وقتی هم می گوییم نوع داده ای نا منظم است به این معنی است که نمیتوان با استفاده از ایندکس به مقادیر آن دسترسی پیدا کرد.
تغییر پذیر
نوع داده ای Dictionary تغییر پذیر هستند، به این معنی که پس از ایجاد این نوع داده ای می توان آیتم های آن را تغییر داد، آیتم جدیدی ایجاد کرد و یا حتی آیتمی از آن را حذف کرد.
مجاز نبودن آیتم های تکراری
نوع داده ای Dictionary نمی توانند دو آیتم با نام key یکسان داشته باشند. اگر این اتفاق بیوفتد و نام key یکسان در آیتم ها تعریف کنید آیتم تکراری مقدارش بازنویسی خواهد شد. به مثال زیر دقت کنید.
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964,
"year": 2020
}
print(thisdict)
طول دیکشنری ها
برای به دست آوردن تعداد آیتم های این نوع داده ای از تابع len استفاده می کنیم.
مثال: در این مثال تعداد آیتم های نوع داده ای Dictionary در خروجی چاپ شده است.
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964,
"year": 2020
}
print(len(thisdict))
نوع های داده مجاز در Dictionaries
نوع های داده ای مجاز در دیکشنری می تواند شامل هر نوع داده ای باشد.
در مثال زیر ما برای تعریف آیتم های Dictionaries از چهار نوع رشته ای، عددی و بولی و لیست استفاده کردیم.
thisdict = {
"brand": "Ford",
"electric": False,
"year": 1964,
"colors": ["red", "white", "blue"]
}
تابع type
از دیدگاه پایتون، Dictionary ها به عنوان اشیا با نوع داده ای Dict تعریف می شوند.
<class 'dict'>
مثال: در این مثال نوع داده ای Dictionary زیر در خروجی چاپ می شود.
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(type(thisdict))
دسترسی به آیتم های دیکشنری در پایتون (Python)
با مراجعه به نام key یک Dictionary در داخل یک جفت براکت می توانید به آیتم های آن دسترسی پیدا کنید.
مثال: در این مثال به آیتمی با کلید واژه “model” دسترسی پیدا کرده است.
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = thisdict["model"]
همچنین متدی به نام get وجود دارد که همین نتیجه را برمیگرداند.
x = thisdict.get("model")
دریافت key ها در Dictionaries
متد keys لیستی از تمام کلید های دیکشنری را به ما می دهد.
مثال: در زیر لیست تمام key ها در Dictionary مورد نظر را برای ما برگشت می دهد.
x = thisdict.keys()
لیست 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
دریافت value ها در دیکشنری
متد value لیستی از تمام value های Dictionary را به ما می دهد.
مثال: در زیر لیست تمام value ها در دیکشنری مورد نظر را برای ما برگشت می دهد.
x = thisdict.values()
لیست 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
حتی اگر 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
دریافت آیتم های دیکشنری
متد items هر آیتم را در Dictionary به عنوان یک چندتایی (tuple) در یک لیست برمیگرداند.
مثال: در این مثال هر آیتم به عنوان یک جفت مقدار key : value برگشت داده می شود.
x = thisdict.items()
لیست برگشتی نمای نوع داده ای دیکشنری است، به این معنی که هر گونه تغییر در 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
مثال: در این مثال آیتم جدیدی به لیست اضافه می شود و لیست برگشتی بروز می شود.
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.items()
print(x) #before the change
car["color"] = "red"
print(x) #after the change
بررسی وجود 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")
تغییر دادن آیتم های دیکشنری در پایتون (Python)
شما می توانید با مراجعه به نام key آن آیتم مقدار آن را تغییر دهید.
مثال: در این مثال سال را به 2018 تغییر می دهد.
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict["year"] = 2018
به روز رسانی Dictionaries
متد update فرهنگ لغت را از مقادیری که در آرگومان داده شده به روز رسانی می کند
آرگومان باید حتما یک dictionary و یا یک شی قابل پیمایش ما فرمت قالب key : value باشد.
مثال: در این مثال سال ماشین را با متد update تغییر می دهد.
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict.update({"year": 2020})
اضافه کردن به آیتم های Dictionary در پایتون (Python)
برای اضافه کردن یک آیتم جدید به این نوع داده ای باید یک key جدید تعریف کنید و value به آن اختصاص دهید.
مثال: در زیر یک آیتم جدید به نام “color” با مقدار “red” به دیکشنری اضافه شده است.
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict["color"] = "red"
print(thisdict)
شما همچنین می توانید از متد update که در بالا گفته شد، برای اضافه کردن آیتم به Dictionaries استفاده کنید.
مثال: اضافه کردن آیتم جدید با متد update به دیکشنری
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict.update({"color": "red"})
حذف آیتم های دیکشنری در پایتون (Python)
روش های مختلفی در پایتون وجود دارد که با آن ها می توانید آیتم های یک Dictionary را حذف کنید که در ادامه به بررسی آن ها می پردازیم.
متد pop
این متد آیتم مورد نظر شما را با نام key آن حذف می کند.
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict.pop("model")
print(thisdict)
متد popitem
این متد آخرین آیتم وارد شده را حذف می کند، قبل از نسخه 3.7 پایتون این متد یک آیتم را به صورت تصادفی حذف می کرد.
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict.popitem()
print(thisdict)
کلمه کلیدی del
در این روش آیتم را با نام key مشخص شده حذف می کند.
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
del thisdict["model"]
print(thisdict)
این کلمه کلیدی همچنین می تواند یک dictionary را به طور کامل حذف کند.
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
del thisdict
print(thisdict) #this will cause an error because "thisdict" no longer exists.
چون بعد از حذف کامل dictionary دیگر چیزی برای نمایش وجود ندارد پیغام خطا چاپ می کند.
متد clear
این متد تمام آیتم های دیکشنری را پاک می کند اما خود dictionary حذف نمی شود.
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict.clear()
print(thisdict)
حلقه های Dictionaries در پایتون (Python)
شما می توانید یک Dictionary را با حلقه for پیمایش کنید.
هنگام پیمایش یک دیکشنری می توانید مقادیر آن را از طریق کلید واژه (key) برگردانید، اما متدهایی نیز برای این کار وجود دارد که در ادامه آن ها را بررسی می کنیم.
مثال: در این مثال لیست key ها را به ترتیب یکی یکی برمیگرداند.
for x in thisdict:
print(x)
مثال: در این مثال لیست value ها را به ترتیب یکی یکی برمیگرداند.
for x in thisdict:
print(thisdict[x])
متد values
مثال: همچنین می توانید با متد values مقادیر (value) یک Dictionary را برگردانید.
for x in thisdict.values():
print(x)
متد keys
مثال: برای برگشت کلید واژه (key) های یک Dictionary می توانید از متد keys استفاده کنید.
for x in thisdict.keys():
print(x)
متد items
مثال: برای برگشت کلید واژه و مقدار (key : value) می توانید از متد items() استفاده کنید.
for x, y in thisdict.items():
print(x, y)
کپی کردن یک 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)
متد dict
یکی دیگر از راه های ایجاد یک کپی از یک دیکشنری استفاده از متد dict است.
مثال: در زیر یک کپی از Dictionary با متد dict ایجاد شده است.
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
mydict = dict(thisdict)
print(mydict)
دیکشنری های تو در تو در پایتون (Python)
در پایتون یک دیکشنری خود می تواند شامل چندین Dictionary باشد و در اصطلاح به این عمل تو در تو (nested) نویسی Dictionary ها گفته می شود.
مثال: در زیر یک دیکشنری ایجاد شده که خود دارای 3 Dictionary دیگر است.
myfamily = {
"child1" : {
"name" : "Emil",
"year" : 2004
},
"child2" : {
"name" : "Tobias",
"year" : 2007
},
"child3" : {
"name" : "Linus",
"year" : 2011
}
}
همچنین می توانید چند دیکشنری را به یک 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)
پایتون مجموعه ای از متدهای داخلی دارد که می توانید از آن ها برای ایجاد تغییرات در Dictionaries استفاده کنید که در جدول زیر به طول خلاصه وار آن ها را توضیح داده ایم.
متد | توضیحات |
---|---|
Clear | پاک کردن تمام آیتم های یک فرهنگ لغت |
Copy | ایجاد یک کپی از یک فرهنگ لغت |
Fromkeys | برگشت دادن یک فرهنگ لغت با کلید و مقدار های مشخص شده |
Get | برگشت دادن یک مقدار از یک کلید مشخص |
Items | یک لیست چندتایی شامل کلید و مقدار مشخص شده را برمیگرداند |
Keys | لیستی را که شامل همه کلید های یک فرهنگ لغت است برمیگرداند |
Pop | حذف یک آیتم با کلید مشخص شده |
Popitem | حذف آخرین کلید و مقدار از یک فرهنگ لغت |
Setdefault | مقدار کلید مشخص شده را برمی گرداند و اگر کلید وجود نداشت کلید را با مقدار مشخص شده وارد کنید |
Update | فرهنگ لغت را با مقدار و کلید مشخص شده به روز می کند |
Values | لیستی را که شامل همه مقدار های یک فرهنگ لغت است برمیگرداند |