Python - Copy Dictionaries

در پایتون برای کپی کردن دیکشنری‌ها چند روش اصلی وجود دارد. در ادامه درسنامه‌ای مشابه سبک قبلی آماده کرده‌ام:

🔹 کپی سطحی با ()copy

متد ()copy یک کپی سطحی (shallow copy) از دیکشنری ایجاد می‌کند:

person = {"name": "Ali", "age": 25, "city": "Tehran"} person_copy = person.copy() print(person_copy)

📌 خروجی:

{'name': 'Ali', 'age': 25, 'city': 'Tehran'}

⚠️ تغییر در مقادیر غیرمستقیم مانند لیست‌ها در نسخه کپی، روی دیکشنری اصلی هم تأثیر می‌گذارد (چون کپی سطحی است).

🔹 کپی با ()dict

می‌توان با ساختار ()dict نیز یک کپی ساده ایجاد کرد:

person_copy2 = dict(person) print(person_copy2)

📌 خروجی:

{'name': 'Ali', 'age': 25, 'city': 'Tehran'}

🔹 کپی عمیق با ()deepcopy از ماژول copy

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

import copy person = {"name": "Ali", "age": 25, "hobbies": ["Reading", "Coding"]} person_deep_copy = copy.deepcopy(person) person_deep_copy["hobbies"].append("Swimming") print(person) # دیکشنری اصلی بدون تغییر print(person_deep_copy) # کپی تغییر کرده است

📌 خروجی:

{'name': 'Ali', 'age': 25, 'hobbies': ['Reading', 'Coding']} {'name': 'Ali', 'age': 25, 'hobbies': ['Reading', 'Coding', 'Swimming']}

🔹 نکات مهم

  • ()copy و ()dict برای کپی سطحی مناسب هستند.

  • برای دیکشنری‌های تو در تو یا شامل لیست و دیکشنری داخلی، از ()copy.deepcopy استفاده کنید.

  • دیکشنری کپی شده به‌صورت مستقل از دیکشنری اصلی عمل می‌کند (به جز مقادیر داخلی در کپی سطحی).