آموزش نوع داده دیکشنری در پایتون
منبع: https://rasanika.com
یک متغیر از نوع Dictionary در پایتون به صورت زیر تعریف میشود:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
ویژگی های دیکشنری
دیکشنری ها برای ذخیره مقادیر داده به شکل کلید:مقدار استفاده می شوند.
دیکشنری مجموعه ای دارای ترتیب* و قابل تغییر است که نمی تواند کلید های تکراری داشته باشد.
از نسخه 3.7 پایتون، دیکشنری ها دارای ترتیب هستند. در پایتون 3.6 و قبلتر، دیکشنری ها نامرتب هستند.
مثال ایجاد و نمایش دیکشنری:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(thisdict)
آیتم های دیکشنری
آیتم های دیکشنری به صورت کلید:مقدار هستند و می توان با استفاده از کلید به مقدار آنها دسترسی پیدا کرد.
مثال
مقدار "brand" در دیکشنری را چاپ کنید:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(thisdict["brand"])
ترتیب آیتم ها
وقتی می گوییم دیکشنری ها دارای ترتیب هستند به این معنی است که آیتم های داخل دیکشنری دارای ترتیب مشخصی هستند و این ترتیب تغییر نمی کند.
قابل تغییر
دیکشنری ها قابل تغییر هستند، به این معنی که بعد از ایجاد دیکشنری، می توانیم آیتم هایش را تغییر دهیم، اضافه یا حذف کنیم.
تکرار مجاز نیست
دیکشنری نمی تواند دو آیتم با کلید یکسان داشته باشد:
مثال، مقادیر تکراری مقادیر موجود را بازنویسی می کنند:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964,
"year": 2020
}
print(thisdict)
تعداد آیتم های دیکشنری
برای به دست آوردن تعداد آیتم های یک دیکشنری، از متد len()
استفاده کنید:
مثال
print(len(thisdict))
نوع داده آیتم های دیکشنری
مقادیر موجود در آیتم های دیکشنری می توانند از هر نوع داده ای تشکیل شده باشند:
مثال
انواع داده های رشته، int، boolean و list:
thisdict = {
"brand": "Ford",
"electric": False,
"year": 1964,
"colors": ["red", "white", "blue"]
}
type()
از دیدگاه پایتون، دیکشنری ها به عنوان اشیایی با نوع داده «dict» تعریف میشوند:
<class 'dict'>
مثال
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(type(thisdict))
تابع dict()
همچنین می توان از تابع dict()
برای ساخت دیکشنری استفاده کرد.
مثال
thisdict = dict(name = "John", age = 36, country = "Norway")
print(thisdict)
دسترسی به آیتم های دیکشنری
برای به دست آوردن مقدار یک آیتم در دیکشنری، میتوانید به نام کلید آن مراجعه کنید:
مثال
مقدار کلید "model" را بدست آورید:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = thisdict["model"]
همچنین متدی به نام get()
وجود دارد که همان نتیجه را به شما می دهد:
مثال
x = thisdict.get("model")
فهرست کلیدهای دیکشنری
متد keys()
فهرستی از تمام کلیدهای دیکشنری را برمی گرداند.
مثال
دریافت لیستی از کلیدها:
x = thisdict.keys()
لیست کلیدها یک view از دیکشنری است، به این معنی که هر تغییری که در دیکشنری انجام شود در لیست کلیدها منعکس خواهد شد.
مثال
یک مورد جدید به دیکشنری اصلی اضافه کنید و ببینید که لیست کلیدها نیز بروز می شود:
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.keys()
print(x) #before the change
car["color"] = "white"
print(x) #after the change
فهرست مقادیر دیکشنری
متد values()
لیستی از تمام مقادیر موجود در دیکشنری را برمی گرداند.
مثال
لیستی از مقادیر را دریافت کنید:
x = thisdict.values()
لیست مقادیر نیز یک view از دیکشنری است، به این معنی که هر تغییری که در دیکشنری انجام شود در لیست مقادیر منعکس خواهد شد.
مثال
تغییری در دیکشنری اصلی ایجاد کنید و ببینید که لیست مقادیر نیز بروز می شود:
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.values()
print(x) #before the change
car["year"] = 2020
print(x) #after the change
مثال
یک مورد جدید به دیکشنری اصلی اضافه کنید و ببینید که لیست مقادیر نیز بروز می شود:
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.values()
print(x) #before the change
car["color"] = "red"
print(x) #after the change
دسترسی به لیست آیتم ها
متد items()
هر آیتم دیکشنری را به صورت تاپل (چندتایی) در یک لیست برمی گرداند.
مثال
x = thisdict.items()
این لیست نیز یک view از دیکشنری است، به این معنی که هر تغییری که در دیکشنری انجام شود در این لیست منعکس خواهد شد.
مثال
تغییری در دیکشنری اصلی ایجاد کنید و ببینید که لیست موارد نیز بروز می شود:
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
بررسی وجود کلید در دیکشنری
برای یافتن اینکه آیا یک کلید مشخص در یک دیکشنری وجود دارد یا خیر از کلیدواژه in
استفاده کنید:
مثال
بررسی کنید که آیا "model" در دیکشنری وجود دارد یا خیر:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
if "model" in thisdict:
print("Yes, 'model' is one of the keys in the thisdict dictionary")
تغییر آیتم های دیکشنری
شما می توانید مقدار یک آیتم را با مراجعه به کلید آن تغییر دهید:
مثال
مقدار "year" را به 2018 تغییر دهید:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict["year"] = 2018
بروزرسانی دیکشنری
متد update()
دیکشنری را با ورودی داده شده بروز می کند، این ورودی باید یک دیکشنری یا یک شیء تکرارگر (iterator) با ساختار کلید:مقدار باشد.
مثال
با استفاده از متد update()
در کد زیر مقدار "year" را بروز کنید:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict.update({"year": 2020})
افزودن آیتم به دیکشنری
افزودن آیتم جدید به دیکشنری با استفاده از یک کلید جدید و اختصاص یک مقدار به آن انجام می شود:
مثال
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict["color"] = "red"
print(thisdict)
حذف آیتم های دیکشنری
چندین روش برای حذف آیتم ها از دیکشنری وجود دارد:
متد pop()
آیتمی را با کلید مشخص شده حذف می کند:
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
آیتمی با کلید مشخص شده را حذف می کند:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
del thisdict["model"]
print(thisdict)
کلیدواژه del
همچنین می تواند خود دیکشنری را به طور کامل حذف کند:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
del thisdict
print(thisdict) #this will cause an error because "thisdict" no longer exists.
متد clear()
دیکشنری را خالی می کند:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict.clear()
print(thisdict)
حلقه روی آیتم ها
با استفاده از یک حلقه for
می توانید روی آیتم های دیکشنری حلقه بزنید.
هنگام حلقه زدن روی دیکشنری، مقدار بازگشتی کلیدهای دیکشنری است، اما روش هایی برای برگرداندن مقادیر نیز وجود دارد.
تمام کلیدهای دیکشنری را تک تک چاپ کنید:
for x in thisdict:
print(x)
تمام مقادیر دیکشنری را تک تک چاپ کنید:
for x in thisdict:
print(thisdict[x])
همچنین می توانید از متد values()
برای برگرداندن مقادیر یک دیکشنری استفاده کنید:
for x in thisdict.values():
print(x)
از متد keys()
برای بازگرداندن کلیدهای دیکشنری می توانید استفاده کنید:
for x in thisdict.keys():
print(x)
با استفاده از متد items()
میتوانید به طور همزمان روی هم کلید ها و هم مقادیر حلقه بزنید:
for x, y in thisdict.items():
print(x, y)
کپی کردن یک دیکشنری
یک دیکشنری را صرفا با تایپ کردن dict2 = dict1
نمیتوانید کپی کنید، چون در این صورت dict2
فقط یک رفرنس به dict1
خواهد بود و تغییرات ایجاد شده در dict1
به طور خودکار در dict2
نیز اعمال خواهد شد.
راه هایی برای کپی کردن دیکشنری وجود دارد، یکی از این راه ها استفاده از متد copy()
خود دیکشنری است:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
mydict = thisdict.copy()
print(mydict)
راه دیگر برای کپی کردن، استفاده از تابع داخلی dict()
است:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
mydict = dict(thisdict)
print(mydict)
دیکشنری های تو در تو (Nested)
یک دیکشنری می تواند شامل دیکشنری های دیگری نیز باشد، به این حالت دیکشنری های تو در تو می گویند.
مثال
myfamily = {
"child1" : {
"name" : "Emil",
"year" : 2004
},
"child2" : {
"name" : "Tobias",
"year" : 2007
},
"child3" : {
"name" : "Linus",
"year" : 2011
}
}
مثال دیگر
child1 = {
"name" : "Emil",
"year" : 2004
}
child2 = {
"name" : "Tobias",
"year" : 2007
}
child3 = {
"name" : "Linus",
"year" : 2011
}
myfamily = {
"child1" : child1,
"child2" : child2,
"child3" : child3
}
دسترسی به آیتم ها در دیکشنری تو در تو
برای دسترسی به یک آیتم از یک دیکشنری تودرتو، باید به تعداد لازم کلید ها را پشت سر هم بنویسیم:
print(myfamily["child2"]["name"])
متد های دیکشنری
پایتون مجموعهای از توابع داخلی دارد که میتوانید موقع کار با دیکشنریها از آن توابع استفاده کنید.
Method | Description |
clear() | Removes all the elements from the dictionary |
copy() | Returns a copy of the dictionary |
fromkeys() | Returns a dictionary with the specified keys and value |
get() | Returns the value of the specified key |
items() | Returns a list containing a tuple for each key value pair |
keys() | Returns a list containing the dictionary's keys |
pop() | Removes the element with the specified key |
popitem() | Removes the last inserted key-value pair |
setdefault() | Returns the value of the specified key. If the key does not exist: insert the key, with the specified value |
update() | Updates the dictionary with the specified key-value pairs |
values() | Returns a list of all the values in the dictionary |
آرایهها (دادههای گروهی) در پایتون
چهار نوع داده برای پشتیبانی از آرایه در زبان برنامه نویسی پایتون وجود دارد:
لیست مجموعه ای مرتب و قابل تغییر است. اعضای تکراری مجاز هستند.
تاپل مجموعه ای مرتب و غیرقابل تغییر است. اعضای تکراری مجاز هستند.
ست مجموعه ای نامرتب و غیرقابل تغییر* و ایندکس نشده است. بدون عضو تکراری.
دیکشنری مجموعه ای مرتب** و قابل تغییر است. بدون عضو تکراری.
* آیتمهای ست غیر قابل تغییر هستند، اما می توانید آنها را حذف کرده یا موارد جدید اضافه کنید.
**از نسخه 3.7 پایتون، دیکشنری ها دارای ترتیب هستند. در پایتون 3.6 و قبل، دیکشنری ها نامرتب هستند.
هنگام انتخاب نوع داده برای تعریف یک آرایه، درک خواص آن نوع مهم است. انتخاب نوع مناسب برای یک مقدار می تواند به معنای افزایش کارایی و امنیت کد باشد.