دیکشنری: کلید ها و مقادیر
در پایتون دیکشنری ها دسته های داده ی مرتب نشده( unordered collection ) هستند. دیکشنری ها را با استفاده از { } تعریف میکنیم و دارای کلیدها( keys ) و مقادیر ( values ) هستند.
برای نمونه نگاهی به کد پایین داشته باشید، در این کد اطلاعات یک کارمند در یک دیکشنری قرار دارند و در متغیر employee وارد می شوند:
employee = {
'name': 'Jack Nelson',
'age': 32,
'department': 'sales'
}
اگر با فایل های JSON و زبان جاوااسکریپت آشنایی داشته باشید شباهت زیادی بین این فایل ها و دیکشنری های پایتون میبینید. البته وارد کردن JSON به پایتون به سادگی انجام پذیر است اما دیکشنری های پایتون یک ساختار داده ی کامل و مستقل هستند که الگوریتم های خود را دارند و JSON تنها ظاهر مشابه ای با دیکشنری های پایتون دارد.
به کد بالا دقت کنید، میتوان کد بالا را به صورت جدولی نیز نمایش داد:
المان های داخلی دیکشنری ها به صورت جفت های key-value در نظر گرفته می شوند و هر کلید به یک مقدار مرتبط( map ) می شود.
دیکشنری ها مانند لیست ها ویژگی های زیر را دارند:
1- هردو میتوانند مقادیر مختلف را ذخیره کنند.
2- هر دو میتوانند تغییر کرده و به داده های آنها اضافه یا از آنها کم شود.
3- هردو میتوانند تو در تو باشند.
تفاوت اصلی بین لیست ها و دیکشنری ها در نحوه ی دسترسی به المان های داخلی آن هاست. المان های لیست ها توسط index موقعیتی آنها قابل دسترسی هستند و المان های دیکشنری ها از طریق کلید خود قابل دسترسی هستند. به همین علت دیکشنری ها زمانی که داده های ما برچسب مشخصی داشته باشند، گزینه های بهتری هستند. به ساختار زیر نگاه کنید، در این ساختار بهترین ساختار داده ی مشابه برای database لیست ها هستند که record های داخلی آنها را با دیکشنری مشخص می کنیم و در درون دیکشنری ها هم field ها را با دیکشنری مشخص میکنیم یعنی یک ساختار تو در تو خواهیم داشت که 3 لایه دارد و لایه ی بیرونی آن لیست و 2 لایه ی داخلی آن دیکشنری ها هستند.
در کنار موارد ذکر شده این 2 قانون را نیز برای کار با دیکشنری ها در نظر بگیرید:
1- کلید ها در یکی دیکشنری یکتا هستند(کلید تکراری نداریم).
2- کلید ها می توانند رشته، عدد و یا تاپل( tuple ) باشند.