دیکشنری (Dictionary) یکی از انواع دادهای در پایتون است که اطلاعات را به صورت کلید-مقدار (Key-Value) ذخیره میکند. برخلاف لیستها که مقادیرشان به صورت ایندکس مشخص میشود، در دیکشنریها از کلید برای دسترسی به مقدار استفاده میشود.
my_dict = {"نام": "علی","سن": 25,"شغل": "برنامهنویس"}
متد keys()
این متد تمامی کلیدهای دیکشنری را برمیگرداند.
print(my_dict.keys()) # خروجی: dict_keys(['نام', 'سن', 'شغل'])
متد values()
این متد تمامی مقادیر دیکشنری را برمیگرداند.
print(my_dict.values()) # خروجی: dict_values(['علی', 25, 'برنامهنویس'])
items()این متد لیستی از زوجهای کلید-مقدار را به صورت تاپل برمیگرداند.
print(my_dict.items()) # خروجی: dict_items([('نام', 'علی'), ('سن', 25), ('شغل', 'برنامهنویس')])
مجموعه (Set) در پایتون یک نوع دادهای است که مقادیر یکتا و بدون ترتیب را ذخیره میکند.
ویژگیهای مجموعهها:
ایجاد یک مجموعه
my_set = {1, 2, 3, 4, 4, 5}print(my_set) # خروجی: {1, 2, 3, 4, 5} (عدد 4 تکراری حذف شد)
عملیات روی مجموعهها
افزودن مقدار به مجموعه:
my_set.add(6)print(my_set) # خروجی: {1, 2, 3, 4, 5, 6}
حذف مقدار از مجموعه:
my_set.remove(3)print(my_set) # خروجی: {1, 2, 4, 5, 6}
عملیات ریاضی روی مجموعهها:
set1 = {1, 2, 3}set2 = {3, 4, 5}print(set1 | set2) # اجتماع: {1, 2, 3, 4, 5}print(set1 & set2) # اشتراک: {3}print(set1 - set2) # تفاضل: {1, 2}
تفاوت با لیستها و تاپلها:
تفاوت Shallow Copy و Deep Copy در لیستها
وقتی یک لیست را در پایتون کپی میکنیم، دو روش برای این کار وجود دارد:
در این روش، یک کپی از لیست ایجاد میشود، اما اگر لیست شامل لیستهای تو در تو باشد، این لیستهای داخلی به صورت مرجع (Reference) کپی میشوند.
import copylist1 = [[1, 2], [3, 4]]list2 = copy.copy(list1) # کپی سطحیlist2[0][0] = 99print(list1) # خروجی: [[99, 2], [3, 4]]print(list2) # خروجی: [[99, 2], [3, 4]]
در این مثال، با تغییر مقدار list2، مقدار list1 نیز تغییر کرد، چون لیست داخلی به صورت مرجع کپی شده است.
در این روش، یک کپی کامل از لیست و تمامی لیستهای تو در تو ساخته میشود، به طوری که تغییر در کپی اصلی، تغییری در نسخهی جدید ایجاد نکند.
list1 = [[1, 2], [3, 4]]list3 = copy.deepcopy(list1) # کپی عمیقlist3[0][0] = 99print(list1) # خروجی: [[1, 2], [3, 4]]print(list3) # خروجی: [[99, 2], [3, 4]]