Collections در پایتون

۴ نوع داده‌ی Collection در زبان برنامه نویسی پایتون وجود دارد:
List: یک مجموعه‌ از داده‌ها که مرتب و قابل تغییر است و می‌تواند اعضای تکراری داشته باشد.
Tuple: یک مجموعه‌ از داده‌ها که مرتب است و قابل تغییر نیست و می‌تواند اعضای تکراری داشته باشد.
Set: یک مجموعه‌ از داده‌ها که نامرتب و بدون اندیس است و نمی‌تواند اعضای تکراری داشته باشد.Dictionary: یک مجموعه‌ از داده‌ها که نامرتب، قابل تغییر و دارای اندیس است و نمی‌تواند اعضای تکراری داشته باشد.
هنگام انتخاب یک نوع از Collection باید ویژگی‌های آن را بدانید. انتخاب نوع صحیح برای یک مجموعه‌ از داده‌های خاص می‌تواند در افزایش راندمان و امنیت مؤثر باشد.

Dictionary

یک مجموعه‌ از داده‌ها که نامرتب، قابل تغییر و دارای اندیس است و نمی‌تواند اعضای تکراری داشته باشد.
در پایتون Dictionary با آکولاد (Curly Brackets) نوشته می‌شود و دارای کلید و مقدار است.
مثال زیر یک Dictionary ایجاد و چاپ می‌کند.

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

# Output
{'brand': 'Ford', 'model': 'Mustang', 'year': 1964}

دسترسی به آیتم‌ها

می‌توانید با استفاده از نام کلید به آیتم‌های Dictionary دسترسی داشته باشید.
مثال زیر مقدار کلید model را چاپ می‌کند.

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

# Output
Mustang

همچنین می‌توانید برای دسترسی به مقدار‌ها از متد get استفاده کنید.
مثال زیر مقدار کلید model را با استفاده از متد get چاپ می‌کند.

# Input
thisdict = {
    "brand": "Ford",
    "model": "Mustang",
    "year": 1964
}
x = thisdict.get("model")
print(x)

# Output
Mustang

تغییر مقدار آیتم‌ها

برای تغییر مقدار یک آیتم خاص به نام کلید آن مراجعه کنید.
مثال زیر مقدار کلید year را تغییر می‌دهد.

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

# Output
{'brand': 'Ford', 'model': 'Mustang', 'year': 2018}

پیمایش Dictionary

با استفاده از حلقه‌ی FOR می‌توانید Dictionary را پیمایش کنید.
هنگام پیمایش Dictionary مقدار برگشتی، کلیدهای Dictionary است. اما متدهایی برای برگرداندن مقدارها نیز وجود دارد.
مثال زیر همه‌ی کلیدهای Dictionary را یک به یک چاپ می‌کند.

# Input
thisdict = {
    "brand": "Ford",
    "model": "Mustang",
    "year": 1964
}
for x in thisdict:
    print(x)

# Output
brand
model
year

مثال زیر همه‌ی مقدارهای Dictionary را یک به یک چاپ می‌کند.

# Input
thisdict = {
    "brand": "Ford",
    "model": "Mustang",
    "year": 1964
}
for x in thisdict:
    print(thisdict[x])

# Output
Ford
Mustang
1964

همچنین می‌توانید از متد values برای برگرداندن مقدارهای Dictionary استفاده کنید.

# Input
thisdict = {
    "brand": "Ford",
    "model": "Mustang",
    "year": 1964
}
for x in thisdict.values():
    print(x)

# Output
Ford
Mustang
1964

با استفاده از متد items می‌توانید کلیدها و مقدارهای Dictionary را پیمایش کنید.

# Input
thisdict = {
    "brand": "Ford",
    "model": "Mustang",
    "year": 1964
}
for x, y in thisdict.items():
    print(x, y)

# Output
brand Ford
model Mustang
year 1964

بررسی وجود داشتن آیتم

برای تعیین اینکه آیا یک کلید مشخص در Dictionary وجود دارد از کلمه‌‌‌ی کلیدی IN استفاده کنید.
مثال زیر بررسی می‌کند که آیا کلید model در Dictionary وجود دارد یا خیر.

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

# Output
Yes, 'model' is one of the keys in the thisdict dictionary

طول Dictionary

برای تعیین تعداد آیتم‌ها (جفت‌های کلید – مقدار) در Dictionary از تابع len استفاده کنید.
مثال زیر تعداد آیتم‌های Dictionary را چاپ می‌کند.

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

# Output
3

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

افزودن یک آیتم به Dictionary با استفاده از یک کلید جدید و اختصاص دادن مقدار به آن انجام می‌شود.

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

# Output
{'brand': 'Ford', 'model': 'Mustang', 'year': 1964, 'color': 'red'}

حذف آیتم

چندین روش برای حذف آیتم‌ها از Dictionary وجود دارد.
مثال زیر از متد pop برای حذف آیتم با نام کلید مشخص‌شده استفاده می‌کند.

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

# Output
{'brand': 'Ford', 'year': 1964}

متد popitem آخرین آیتم درج شده را حذف می‌کند. (در نسخه‌های قبل از 3.7 یک آیتم به صورت تصادفی حذف می‌شد.)

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

# Output
{'brand': 'Ford', 'model': 'Mustang'}

کلمه‌ی کلیدی del آیتم را با نام کلید مشخص‌شده حذف می‌کند.

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

# Output
{'brand': 'Ford', 'year': 1964}

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

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

# Output
Traceback (most recent call last):
  File "demo_dictionary_del3.py", line 7, in <module>
    print(thisdict) #this will cause an error because "thisdict" no longer exists.
NameError: name 'thisdict' is not defined

با استفاده از متد clear می‌توانید Dictionary را خالی کنید.

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

# Output
{}

کپی کردن Dictionary

شما نمی‌توانید یک List را فقط با نوشتن dict1 = dict2 کپی کنید. زیرا در این صورت dict2 فقط یک مرجع (Refrence) برایdict1 خواهد بود و تغییرات ایجاد شده در dict1 به صورت خودکار در dict2 نیز انجام می‌شود.
روش‌هایی برای کپی کردن Dictionary وجود دارد که یکی از آن‌ها استفاده از متد copy است.
مثال زیر با استفاده از متدcopy یک کپی از Dictionary تهیه می‌کند.

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

# Output
{'brand': 'Ford', 'model': 'Mustang', 'year': 1964}

راه دیگر آن استفاده از متد dict است.
مثال زیر با استفاده از متد dict یک کپی از Dictionary تهیه می‌کند.

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

# Output
{'brand': 'Ford', 'model': 'Mustang', 'year': 1964}

دیکشنری‌های تو در تو

یک Dictionary می‌تواند شامل چندین Dictionary باشد.
مثال زیر یک Dictionary که شامل سه Dictionary است ایجاد می‌کند.

# Input
myfamily = {
    "child1" : {
      "name" : "Emil",
      "year" : 2004
    },
    "child2" : {
      "name" : "Tobias",
      "year" : 2007
    },
    "child3" : {
      "name" : "Linus",
      "year" : 2011
    }
}
print(myfamily)

# Output
{'child1': {'name': 'Emil', 'year': 2004}, 'child2': {'name': 'Tobias', 'year': 2007}, 'child3': {'name': 'Linus', 'year': 2011}}

مثال زیر سه Dictionary ایجاد می‌کند. سپس یک Dictionary با سه Dictionary دیگر ایجاد می‌کند.

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

myfamily = {
  "child1" : child1,
  "child2" : child2,
  "child3" : child3
}

print(myfamily)


# Output
{'child1': {'name': 'Emil', 'year': 2004}, 'child2': {'name': 'Tobias', 'year': 2007}, 'child3': {'name': 'Linus', 'year': 2011}}

تابع سازنده dict

می‌توان از تابع سازنده dict برای ساخت یک Dictionary جدید استفاده کرد.

# Input
thisdict = dict(brand="Ford", model="Mustang", year=1964)
# note that keywords are not string literals
# note the use of equals rather than colon for the assignment
print(thisdict)

# Output
{'brand': 'Ford', 'model': 'Mustang', 'year': 1964}

منابع
w3schools.com – Python Dictionaries
Photo by Christina Morillo from Pexels

نظر دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *