Python

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

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

دیکشنری‌ها در پایتون ساختار داده‌ای بسیار قدرتمندی هستند که برای ذخیره داده‌ها به صورت جفت کلید-مقدار (key-value) به کار می‌روند. هر کلید در یک دیکشنری باید منحصر به فرد باشد و به یک مقدار خاص اشاره می‌کند. این ساختار داده‌ای انعطاف‌پذیر و کارآمد، در بسیاری از برنامه‌های پایتون کاربرد دارد.

[box type=”info” align=”” class=”” width=””]ساختار دیکشنری:[/box]

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

Python
my_dict = {"name": "علی", "سن": 30, "شهر": "تهران"}

در این مثال:

  • name, سن, و شهر کلیدها هستند.
  • علی, 30, و تهران مقادیر مربوط به کلیدها هستند.

[box type=”info” align=”” class=”” width=””]روش‌های مختلف ایجاد دیکشنری‌ها در پایتون[/box]

دیکشنری‌ها (Dictionaries) در پایتون یکی از ساختارهای داده‌ای بسیار پرکاربرد هستند که برای ذخیره داده‌ها به صورت جفت کلید-مقدار استفاده می‌شوند. در این بخش، روش‌های مختلف ایجاد دیکشنری‌ها را بررسی خواهیم کرد.

1. ایجاد دیکشنری خالی:

برای ایجاد یک دیکشنری خالی، می‌توانید از دو روش زیر استفاده کنید:

Python
# روش اول:
my_dict = {}

# روش دوم:
my_dict = dict()

2. ایجاد دیکشنری با مقداردهی اولیه:

برای ایجاد یک دیکشنری با مقادیر اولیه، جفت‌های کلید-مقدار را درون آکولادها قرار می‌دهید:

Python
my_dict = {"name": "علی", "age": 30, "city": "تهران"}

3. ایجاد دیکشنری از لیست‌های تودرتو:

اگر لیستی از لیست‌های دو عضوی دارید که هر لیست داخلی یک جفت کلید-مقدار را نشان می‌دهد، می‌توانید از تابع dict() برای تبدیل آن به یک دیکشنری استفاده کنید:

Python
my_list = [("name", "علی"), ("age", 30), ("city", "تهران")]
my_dict = dict(my_list)

4. ایجاد دیکشنری از دیکشنری دیگر:

برای ایجاد یک دیکشنری جدید بر اساس یک دیکشنری موجود، می‌توانید از متد copy() استفاده کنید:

Python
my_dict1 = {"name": "علی", "age": 30}
my_dict2 = my_dict1.copy()

5. ایجاد دیکشنری با استفاده از دیکشنری درک:

دیکشنری درک (Dictionary Comprehension) روشی کوتاه و قدرتمند برای ایجاد دیکشنری‌ها بر اساس عبارات است:

Python
squares = {x: x*x for x in range(10)}  # ایجاد دیکشنری از اعداد و مربع‌های آن‌ها

6. ایجاد دیکشنری از فایل:

اگر داده‌های شما در یک فایل متنی ذخیره شده است (مثلاً به فرمت JSON)، می‌توانید با استفاده از کتابخانه‌های مناسب مانند json این داده‌ها را به یک دیکشنری تبدیل کنید:

Python
import json

with open('data.json', 'r') as f:
    data = json.load(f)

نکات مهم:

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

مثال جامع:

Python
# ایجاد یک دیکشنری با استفاده از روش‌های مختلف
my_dict1 = {}  # دیکشنری خالی
my_dict2 = {"name": "علی", "age": 30}  # دیکشنری با مقداردهی اولیه
my_list = [("city", "تهران"), ("country", "ایران")]
my_dict3 = dict(my_list)

# ترکیب دیکشنری‌ها
my_dict2.update(my_dict3)

# چاپ دیکشنری نهایی
print(my_dict2)

با استفاده از این روش‌ها، می‌توانید دیکشنری‌هایی با ساختارهای مختلف و پیچیدگی‌های متفاوت ایجاد کنید. انتخاب روش مناسب به نوع داده‌ها و نیازهای برنامه شما بستگی دارد.

 

[box type=”info” align=”” class=”” width=””]کار با چندین دیکشنری در پایتون[/box]

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

روش‌های کار با چندین دیکشنری:

1. ترکیب دیکشنری‌ها:

  • استفاده از متد update(): این متد عناصر یک دیکشنری را به دیکشنری دیگر اضافه می‌کند. اگر کلیدی تکراری وجود داشته باشد، مقدار جدید جایگزین مقدار قبلی می‌شود:

    Python
    dict1 = {'a': 1, 'b': 2}
    dict2 = {'c': 3, 'd': 4}
    dict1.update(dict2)
    print(dict1)  # خروجی: {'a': 1, 'b': 2, 'c': 3, 'd': 4}
    
  • **استفاده از عملگر : این روش مشابه متد update() عمل می‌کند:

    Python
    dict1 = {'a': 1, 'b': 2}
    dict2 = {'c': 3, 'd': 4}
    dict1 = dict1 | dict2
    print(dict1)  # خروجی: {'a': 1, 'b': 2, 'c': 3, 'd': 4}
    

2. مقایسه دیکشنری‌ها:

  • بررسی برابری: برای بررسی اینکه آیا دو دیکشنری برابر هستند یا خیر، از عملگر == استفاده کنید. دو دیکشنری زمانی برابر هستند که کلیدها و مقادیر متناظر آن‌ها یکسان باشد:

    Python
    dict1 = {'a': 1, 'b': 2}
    dict2 = {'a': 1, 'b': 2}
    print(dict1 == dict2)  # خروجی: True
    
  • بررسی اشتراک کلیدها: برای یافتن کلیدهای مشترک بین دو دیکشنری، می‌توانید از مجموعه‌ها (sets) استفاده کنید:

    Python
    dict1 = {'a': 1, 'b': 2}
    dict2 = {'b': 2, 'c': 3}
    common_keys = set(dict1.keys()) & set(dict2.keys())
    print(common_keys)  # خروجی: {'b'}
    

3. ایجاد دیکشنری جدید بر اساس دیکشنری‌های موجود:

  • استفاده از دیکشنری درک: با استفاده از دیکشنری درک می‌توانید دیکشنری جدیدی را بر اساس عبارات ایجاد کنید:

    Python
    dict1 = {'a': 1, 'b': 2}
    dict2 = {'c': 3, 'd': 4}
    new_dict = {k: v for k, v in dict1.items() if v > 1}
    print(new_dict)  # خروجی: {'b': 2}
    

4. دیکشنری‌های تو در تو: دیکشنری‌ها می‌توانند عناصر دیگر را به عنوان مقدار خود داشته باشند، حتی دیکشنری‌های دیگر. این به شما امکان می‌دهد ساختارهای داده‌ای پیچیده‌تری ایجاد کنید:

Python
users = {
    "user1": {"name": "علی", "age": 30},
    "user2": {"name": "فاطمه", "age": 25}
}

کاربردهای عملی:

  • ذخیره اطلاعات ساخت‌یافته: مثلاً اطلاعات کاربران، محصولات، تنظیمات برنامه
  • مدل‌سازی داده‌های پیچیده: مانند گراف‌ها، درخت‌ها و سلسله مراتب سازمانی
  • پردازش داده‌های JSON: داده‌های JSON به صورت دیکشنری در پایتون بارگذاری می‌شوند
  • ساختارهای داده‌ای در یادگیری ماشین: بسیاری از الگوریتم‌های یادگیری ماشین از دیکشنری‌ها برای نمایش داده‌ها استفاده می‌کنند

نکات مهم:

  • کلیدها باید منحصر به فرد باشند: هر کلید تنها یک بار در یک دیکشنری می‌تواند وجود داشته باشد.
  • کلیدها باید غیرقابل تغییر باشند: معمولاً از رشته‌ها، اعداد صحیح و تاپل‌ها به عنوان کلید استفاده می‌شود.
  • مقادیر می‌توانند از هر نوع داده‌ای باشند: مقادیر یک دیکشنری می‌توانند از هر نوع داده‌ای باشند، حتی خودشان دیکشنری باشند.

 

[box type=”info” align=”” class=”” width=””]دسترسی به مقادیر در دیکشنری‌های پایتون[/box]

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

مثال:

Python
my_dict = {"name": "علی", "سن": 30, "شهر": "تهران"}
print(my_dict["name"])  # خروجی: علی

در مثال بالا، با نوشتن my_dict["name"]، به مقداری که با کلید “name” مرتبط است (یعنی “علی”) دسترسی پیدا می‌کنیم.

[box type=”success” align=”” class=”” width=””]روش‌های دیگر دسترسی به مقادیر:[/box]

1. استفاده از متد get(): اگر کلید مورد نظر در دیکشنری وجود نداشته باشد، استفاده از [] خطا ایجاد می‌کند. برای جلوگیری از این خطا، می‌توان از متد get() استفاده کرد. این متد یک مقدار پیش‌فرض را در صورتی که کلید یافت نشود، برمی‌گرداند:

Python
value = my_dict.get("کشور", "نامشخص")
print(value)  # خروجی: نامشخص (زیرا کلید "کشور" در دیکشنری وجود ندارد)

2. استفاده از متد items(): متد items() یک شیء دیده‌بانی (view object) برمی‌گرداند که شامل تمام جفت‌های کلید-مقدار دیکشنری است. می‌توان از این شیء برای پیمایش روی تمام عناصر دیکشنری استفاده کرد:

Python
for key, value in my_dict.items():
    print(f"کلید: {key}, مقدار: {value}")

3. استفاده از متد keys(): متد keys() یک شیء دیده‌بانی برمی‌گرداند که شامل تمام کلیدهای دیکشنری است. می‌توان از این شیء برای دریافت لیستی از کلیدها استفاده کرد:

Python
keys = my_dict.keys()
print(keys)  # خروجی: dict_keys(['name', 'سن', 'شهر'])

4. استفاده از متد values(): متد values() یک شیء دیده‌بانی برمی‌گرداند که شامل تمام مقادیر دیکشنری است. می‌توان از این شیء برای دریافت لیستی از مقادیر استفاده کرد:

Python
values = my_dict.values()
print(values)  # خروجی: dict_values(['علی', 30, 'تهران'])

نکته مهم:

  • تغییرناپذیری کلیدها: کلیدهای یک دیکشنری باید غیرقابل تغییر باشند. یعنی نمی‌توان از لیست‌ها یا دیکشنری‌های دیگر به عنوان کلید استفاده کرد.
  • ترتیب عناصر: در پایتون نسخه‌های قبل از 3.7، ترتیب عناصر در یک دیکشنری تضمین شده نبود. اما از نسخه 3.7 به بعد، دیکشنری‌ها ترتیب را حفظ می‌کنند.

مثال عملی:

Python
user_info = {"نام": "حسین", "سن": 25, "شهر": "شیراز"}
print(f"نام کاربر: {user_info['نام']}")
print(f"سن کاربر: {user_info['سن']}")

# بررسی وجود یک کلید
if "کشور" in user_info:
    print(f"کشور کاربر: {user_info['کشور']}")
else:
    print("اطلاعاتی در مورد کشور کاربر موجود نیست.")

با استفاده از این روش‌ها، می‌توانید به راحتی به اطلاعات ذخیره شده در دیکشنری‌های پایتون دسترسی پیدا کنید و آن‌ها را مدیریت کنید.

افزودن یا تغییر مقادیر:

برای افزودن یک جفت کلید-مقدار جدید یا تغییر مقدار یک کلید موجود، به سادگی آن را مانند یک عنصر جدید به دیکشنری اضافه می‌کنیم:

Python
my_dict["کشور"] = "ایران"  # افزودن یک جفت کلید-مقدار جدید
my_dict["سن"] = 31  # تغییر مقدار یک کلید موجود

حذف یک جفت کلید-مقدار:

برای حذف یک جفت کلید-مقدار از دیکشنری، از متد pop() استفاده می‌کنیم:

Python
my_dict.pop("شهر")

بررسی وجود یک کلید:

برای بررسی اینکه آیا یک کلید خاص در دیکشنری وجود دارد یا خیر، می‌توان از عبارت in استفاده کرد:

Python
if "سن" in my_dict:
    print("کلید سن در دیکشنری وجود دارد")

[box type=”info” align=”” class=”” width=””]مزایای استفاده از دیکشنری‌ها در پایتون[/box]

دیکشنری‌ها (Dictionaries) در پایتون یکی از ساختارهای داده‌ای بسیار قدرتمند و پرکاربرد هستند. این ساختارها به شما اجازه می‌دهند داده‌ها را به صورت جفت کلید-مقدار (key-value) ذخیره کنید. هر کلید باید منحصر به فرد باشد و به یک مقدار خاص اشاره می‌کند.

مزایای اصلی استفاده از دیکشنری‌ها در پایتون عبارتند از:

1. دسترسی سریع به داده‌ها:

    • استفاده از کلید: با استفاده از کلید، می‌توانید به سرعت به مقدار مرتبط با آن دسترسی پیدا کنید. این ویژگی، دیکشنری‌ها را برای جستجو و بازیابی داده‌ها بسیار کارآمد می‌کند.

2. انعطاف‌پذیری بالا:

    • انواع داده‌های مختلف: کلیدها و مقادیر در دیکشنری‌ها می‌توانند از انواع داده‌های مختلفی باشند (اعداد، رشته‌ها، لیست‌ها، دیکشنری‌های دیگر و …).
    • تغییرپذیری: می‌توانید به راحتی عناصر جدیدی به دیکشنری اضافه کنید یا مقادیر موجود را تغییر دهید.

3. ساختار داده‌ای دینامیک:

    • اندازه متغیر: برخلاف لیست‌ها، اندازه دیکشنری‌ها محدود نیست و می‌توانید به تعداد دلخواه جفت کلید-مقدار به آن‌ها اضافه کنید.
    • بدون نیاز به اندیس: نیازی به استفاده از اندیس برای دسترسی به عناصر نیست، بلکه از کلیدها استفاده می‌شود.

4. کاربرد در ساختارهای داده‌ای پیچیده:

    • گراف‌ها و درخت‌ها: دیکشنری‌ها به عنوان پایه برای پیاده‌سازی ساختارهای داده‌ای پیچیده‌تری مانند گراف‌ها و درخت‌ها استفاده می‌شوند.
    • داده‌های سلسله مراتبی: برای نمایش داده‌های سلسله مراتبی و ساختارهای درختی، دیکشنری‌ها بسیار مناسب هستند.

5. نمایندگی داده‌های دنیای واقعی:

    • مدل‌سازی اشیاء: بسیاری از اشیاء در دنیای واقعی را می‌توان با استفاده از دیکشنری‌ها مدل‌سازی کرد (مثلاً یک شخص با ویژگی‌های نام، سن، آدرس و …).

6. استفاده در کتابخانه‌های پایتون:

    • پانداس: برای ایجاد DataFrame‌ها که شبیه به جدول‌های داده‌ای هستند، از دیکشنری‌ها استفاده می‌شود.
    • JSON: داده‌های JSON به صورت دیکشنری در پایتون نمایش داده می‌شوند.

مثال‌های کاربردی:

    • ذخیره اطلاعات کاربران: هر کاربر را می‌توان با یک دیکشنری نمایش داد که شامل اطلاعاتی مانند نام، نام خانوادگی، ایمیل و … است.
    • پیکربندی برنامه‌ها: تنظیمات برنامه‌ها را می‌توان در یک دیکشنری ذخیره کرد.
    • کیشینگ داده‌ها: برای ذخیره نتایج محاسبات قبلی و جلوگیری از محاسبات تکراری، می‌توان از دیکشنری استفاده کرد.
    • ساختارهای داده‌ای در بازی‌ها: برای نمایش موقعیت اشیاء، ویژگی‌های شخصیت‌ها و … در بازی‌ها، از دیکشنری‌ها استفاده می‌شود.

به طور خلاصه، دیکشنری‌ها یکی از ابزارهای قدرتمند و ضروری در برنامه‌نویسی با پایتون هستند. این ساختارها به شما امکان می‌دهند تا داده‌های خود را به شکلی سازمان‌یافته و انعطاف‌پذیر ذخیره و مدیریت کنید.

[box type=”info” align=”” class=”” width=””]کاربردهای دیکشنری‌ها در برنامه‌نویسی[/box]

دیکشنری‌ها (Dictionaries) در برنامه‌نویسی به عنوان یکی از ساختارهای داده‌ای بسیار قدرتمند و پرکاربرد شناخته می‌شوند. این ساختارها به شما اجازه می‌دهند داده‌ها را به صورت جفت کلید-مقدار (key-value) ذخیره کنید. هر کلید باید منحصر به فرد باشد و به یک مقدار خاص اشاره می‌کند.

کاربردهای اصلی دیکشنری‌ها در برنامه‌نویسی عبارتند از:

1. ذخیره اطلاعات ساخت‌یافته:

    • اطلاعات کاربران: هر کاربر را می‌توان با یک دیکشنری نمایش داد که شامل اطلاعاتی مانند نام، نام خانوادگی، ایمیل، آدرس و … است.
    • تنظیمات برنامه: تنظیمات مختلف یک برنامه را می‌توان در یک دیکشنری ذخیره کرد.
    • اطلاعات محصولات: مشخصات محصولات مانند نام، قیمت، موجودی و … را می‌توان در یک دیکشنری ذخیره کرد.

2. پیاده‌سازی کش‌ها:

    • ذخیره نتایج محاسبات قبلی: برای جلوگیری از محاسبات تکراری، می‌توان نتایج محاسبات قبلی را در یک دیکشنری ذخیره کرد و در صورت نیاز به آن‌ها، به جای محاسبه مجدد، از دیکشنری بازیابی کرد.

3. ساختارهای داده‌ای پیچیده:

    • گراف‌ها و درخت‌ها: دیکشنری‌ها به عنوان پایه برای پیاده‌سازی ساختارهای داده‌ای پیچیده‌تری مانند گراف‌ها و درخت‌ها استفاده می‌شوند.
    • داده‌های سلسله مراتبی: برای نمایش داده‌های سلسله مراتبی و ساختارهای درختی، دیکشنری‌ها بسیار مناسب هستند.

4. نمایش اطلاعات به صورت ساخت‌یافته:

    • JSON: داده‌های JSON به صورت دیکشنری در پایتون نمایش داده می‌شوند.
    • XML: اطلاعات XML نیز می‌توانند با استفاده از دیکشنری‌ها در پایتون نمایش داده شوند.

5. پیکربندی برنامه‌ها:

    • پارامترهای ورودی: پارامترهای ورودی یک برنامه را می‌توان در یک دیکشنری ذخیره کرد.
    • تنظیمات سفارشی: تنظیمات سفارشی کاربران را می‌توان در یک دیکشنری ذخیره کرد.

6. مدل‌سازی اشیاء دنیای واقعی:

    • ویژگی‌های اشیاء: هر شیء را می‌توان با یک دیکشنری نمایش داد که شامل ویژگی‌های آن شیء است.

7. استفاده در کتابخانه‌های پایتون:

    • پانداس: برای ایجاد DataFrame‌ها که شبیه به جدول‌های داده‌ای هستند، از دیکشنری‌ها استفاده می‌شود.
    • NumPy: برای ایجاد آرایه‌های چندبعدی، از دیکشنری‌ها استفاده می‌شود.

مزایای استفاده از دیکشنری‌ها در برنامه‌نویسی:

    • دسترسی سریع به داده‌ها: با استفاده از کلید، می‌توانید به سرعت به مقدار مرتبط با آن دسترسی پیدا کنید.
    • انعطاف‌پذیری بالا: دیکشنری‌ها به شما اجازه می‌دهند داده‌های مختلفی از انواع داده‌های مختلف را ذخیره کنید.
    • ساختار داده‌ای دینامیک: اندازه دیکشنری‌ها محدود نیست و می‌توانید به تعداد دلخواه جفت کلید-مقدار به آن‌ها اضافه کنید.
    • بدون نیاز به اندیس: نیازی به استفاده از اندیس برای دسترسی به عناصر نیست، بلکه از کلیدها استفاده می‌شود.

مثال عملی:

Python
# ایجاد یک دیکشنری برای ذخیره اطلاعات یک شخص
person = {
    "نام": "علی",
    "سن": 30,
    "شهر": "تهران",
    "هواپیما": True
}

# دسترسی به یک مقدار خاص
print(person["نام"])  # خروجی: علی

# افزودن یک جفت کلید-مقدار جدید
person["کشور"] = "ایران"

# تغییر مقدار یک کلید
person["سن"] = 31

در کل، دیکشنری‌ها ابزاری قدرتمند و ضروری در برنامه‌نویسی با پایتون هستند. این ساختارها به شما امکان می‌دهند تا داده‌های خود را به شکلی سازمان‌یافته و انعطاف‌پذیر ذخیره و مدیریت کنید.

نمایش بیشتر

هادی محمدیان

هادی محمدیان | متخصص پایگاه داده، تحلیل داده و فرآیندهای سازمانی با تجربه عملی در طراحی و بهینه‌سازی زیرساخت‌های داده. در hadimohammadian.ir مفاهیم کاربردی مدیریت پایگاه داده، تحلیل داده، SQL، Python و اصول مهندسی داده را همراه با نگاه فرآیندمحور به زبان فارسی آموزش می‌دهم. هدف من پیوند دادن دانش فنی داده با نیازهای واقعی کسب‌وکار و کمک به سازمان‌ها برای تصمیم‌گیری داده‌محور است.

دیدگاهتان را بنویسید

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

دکمه بازگشت به بالا