آموزش نوع داده دیکشنری در پایتون

دیکشنری در پایتون

یک متغیر از نوع 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 و قبل، دیکشنری ها نامرتب هستند.

هنگام انتخاب نوع داده برای تعریف یک آرایه، درک خواص آن نوع مهم است. انتخاب نوع مناسب برای یک مقدار می تواند به معنای افزایش کارایی و امنیت کد باشد.

مجموعهآموزش پایتون از صفر(23 پست)
1.پایتون چیست؟ مقدمه پایتون10 ماه قبل2.برنامه نویسی پایتون را چطور شروع کنیم؟10 ماه قبل3.آموزش سینتکس (نحوه نوشتن) پایتون10 ماه قبل4.آموزش متغیرهای پایتون10 ماه قبل5.آموزش انواع داده در پایتون10 ماه قبل6.آموزش اعداد در پایتون10 ماه قبل7.آموزش Casting (تبدیل نوع داده) در پایتون10 ماه قبل8.آموزش رشته در پایتون10 ماه قبل9.آموزش بولین یا Boolean در پایتون10 ماه قبل10.آموزش عملگرهای پایتون10 ماه قبل11.آموزش لیست در پایتون10 ماه قبل12.آموزش تاپل یا چندتایی در پایتون9 ماه قبل13.آموزش Set یا مجموعه در پایتون8 ماه قبل14.آموزش نوع داده دیکشنری در پایتون8 ماه قبل15.آموزش شرط if ... else در پایتون8 ماه قبل16.آموزش حلقه while در پایتون8 ماه قبل17.آموزش حلقه for در پایتون8 ماه قبل18.آموزش توابع در پایتون8 ماه قبل19.آموزش توابع Lambda (لامبدا) در پایتون8 ماه قبل20.آموزش آرایه در پایتون7 ماه قبل21.آموزش کلاس و Object در پایتون7 ماه قبل22.آموزش ارث بری یا وراثت در پایتون7 ماه قبل23.آموزش تکرارگر یا iterator در پایتون7 ماه قبل

کامنت ها