دیکشنری (dict)

اصلاح شده

2026-09-03

دیکشنری‌ها یکی از قدرتمندترین و پرکاربردترین ساختمان‌های داده در پایتون هستن. دیکشنری‌ها مجموعه‌ای از جفت‌های کلید-مقدار هستند که با آکولاد {} تعریف می‌شن.


ویژگی‌های کلیدی

ویژگی توضیح
کلیدها منحصربه‌فرد هر کلید فقط یک بار می‌تونه در دیکشنری وجود داشته باشه
غیرمرتب (تا نسخه 3.6) از پایتون 3.7 به بعد ترتیب درج حفظ می‌شه
قابل تغییر (Mutable) می‌تونید بعد از ایجاد، مقادیر رو تغییر بدید یا جفت‌های جدید اضافه کنید
کلیدها قابل هش (Hashable) کلیدها باید از نوع غیرقابل تغییر باشن (مثل str, int, tuple)

ایجاد دیکشنری

# روش‌های مختلف ایجاد
my_dict1 = {"name": "Mohsen", "age": 32}
my_dict2 = dict(name="Mohsen", age=32)
my_dict3 = dict([("name", "Mohsen"), ("age", 32)])
my_dict4 = {}  # دیکشنری خالی

دسترسی به مقادیر

my_dict = {"name": "Mohsen", "age": 32}

name = my_dict["name"]

name = my_dict.get("name")
age = my_dict.get("city", "unknown")

اضافه کردن و به‌روزرسانی

my_dict = {"name": "Mohsen"}

my_dict["age"] = 32

my_dict["name"] = "Reza"

my_dict.update({"city": "Sari", "age": 25})

حذف کردن

my_dict = {"name": "Mohsen", "age": 32, "city": "Sari"}

del my_dict["age"]

city = my_dict.pop("city")

item = my_dict.popitem()

my_dict.clear()

کپی کردن دیکشنری

اگه فقط با = یه دیکشنری رو به متغیر دیگه نسبت بدید، هر دو متغیر به همون دیکشنری اشاره می‌کنن و تغییر تو یکی، اون یکی رو هم تغییر می‌ده. برای کپی واقعی از copy() یا ماژول copy استفاده کنید.

import copy

original = {"name": "Mohsen", "scores": [10, 20]}

shallow1 = original.copy()
shallow2 = dict(original)

shallow1["name"] = "Reza"
print(original["name"])

shallow1["scores"].append(30)
print(original["scores"])

deep = copy.deepcopy(original)
deep["scores"].append(40)
print(original["scores"])
Mohsen
[10, 20, 30]
[10, 20, 30]

نکته: وقتی مقادیر دیکشنری خودشون شامل ساختارهای قابل تغییر (مثل لیست یا دیکشنری دیگه) باشن، کپی سطحی کافی نیست و باید از deepcopy استفاده کنید.


ادغام دیکشنری‌ها (Python 3.9+)

dict1 = {"a": 1, "b": 2}
dict2 = {"b": 3, "c": 4}

merged = dict1 | dict2 
print(merged)

merged = {**dict1, **dict2}
print(merged)

dict1.update(dict2)
print(dict1)
{'a': 1, 'b': 3, 'c': 4}
{'a': 1, 'b': 3, 'c': 4}
{'a': 1, 'b': 3, 'c': 4}