در پایتون dictionaryها یک نوع دنباله نامنظمِ تغییرپذیر هستند که آیتم ها را به شکل کلید/مقدار ذخیره میکنند. معمولاً برای نگهداری داده های مرتبط، مانند اطلاعات موجود در ID یا مشخصات کاربر، دیکشنریها با آکولاد در هر دو طرف {} ساخته می شوند.
یک دیکشنری در پایتون شبیه به این است:
sammy = {'username': 'sammy-shark', 'online': True, 'followers': 987}
علاوه بر آکولادها، کلون (:) نیز در سراسر دیکشنری وجود دارد.
کلمات سمت چپ کولونها کلیدها هستند. کلیدها را می توان از هر نوع داده تغییر ناپذیری تشکیل داد. کلیدهای دیکشنری بالا عبارتند از:
'username'
'online'
'followers'
هر یک از کلیدهای مثال بالا مقادیر رشته هستند.
کلمات سمت راست کولونها مقادیر هستند. مقادیر را می توان از هر نوع داده تشکیل داد. مقادیر موجود در دیکشنری بالا عبارتند از:
'sammy-shark'
True
987
هر یک از این مقادیر یا یک رشته ، بولی یا صحیح است.
بیایید دیکشنری sammy را چاپ کنیم:
print(sammy)
# OUTPUT
{'username': 'sammy-shark', 'followers': 987, 'online': True}
با نگاه به خروجی ، ترتیب جفت کلید-مقدار تغییر کرده است. در پایتون نسخه 3.5 و قبل از آن ، نوع داده دیکشنری نامرتب است. با این حال ، در پایتون نسخه 3.6 و بالاتر ، نوع داده دیکشنری مرتب باقی می ماند. صرف نظر از اینکه دیکشنری مرتب شده باشد یا خیر، جفت کلید-مقدار دست نخورده باقی می ماند و ما را قادر می سازد تا بر اساس معنای رابطه ای آنها به داده ها دسترسی پیدا کنیم.
دسترسی به مقادیر دیکشنری با کلیدها
از آنجا که دیکشنری ها جفت کلید-مقدار برای ذخیره داده ها ارائه می دهند ، می توانند عناصر مهمی در برنامه پایتون شما باشند.
اگر می خواهیم نام کاربری Sammy را جدا کنیم ، می توانیم با فراخوانی sammy ['username'] این کار را انجام دهیم. بیایید آن را چاپ کنیم:
print(sammy['username'])
# OUTPUT
sammy-shark
دیکشنری ها مانند پایگاه داده رفتار می کنند به این ترتیب که به جای فراخوانی یک عدد صحیح برای به دست آوردن یک مقدار شاخص خاص مانند یک لیست ، یک مقدار را به یک کلید اختصاص می دهید و می توانید آن کلید را فراخوانی کنید تا مقدار مربوط به آن را بدست آورید.
با فراخوانی کلید "username" ، مقدار آن کلید را که "sammy-shark" است دریافت
4 November 2021
sammy = {'username': 'sammy-shark', 'online': True, 'followers': 987}
print(sammy.values())
# OUTPUT
dict_values([True, 'sammy-shark', 987])
متدهای keys() و values() لیست های مرتب نشده ای از کلیدها و مقادیر موجود در دیکشنری sammy را به ترتیب با اشیاء نمای dict_keys و dict_values برمی گردانند.
اگر به همه موارد موجود در دیکشنری علاقه مند باشیم ، می توانیم با متد () items به آنها دسترسی پیدا کنیم:
print(sammy.items())
# OUTPUT
dict_items([('online', True), ('username', 'sammy-shark'), ('followers', 987)])
قالب بازگردانده شده لیستی است که از جفت (کلید-مقدار) ، شیء dict_items تشکیل شده است.
ما می توانیم فرمت لیست برگشتی را با حلقه for تکرار کنیم. به عنوان مثال ، می توانیم هر یک از کلیدها و مقادیر یک دیکشنری را چاپ کنیم ، و سپس با افزودن یک رشته آن را برای انسان خواندنی تر کنیم:
for key, value in sammy.items():
print(key, 'is the key for the value', value)
# OUTPUT
online is the key for the value True
followers is the key for the value 987
username is the key for the value sammy-shark
حلقه for بالا روی موارد درون دیکشنری sammy تکرار شد و کلیدها و مقادیر را خط به خط چاپ کرد ، با اطلاعاتی که درک آن را برای انسان آسان تر می کند.
تغییر دادن دیکشنریها در پایتون
دیکشنریها یک ساختار داده تغییرپذیر هستند ، بنابراین می توانید آنها را تغییر دهید. در این بخش ، به افزودن و حذف عناصر دیکشنری می پردازیم.
بدون استفاده از متد یا تابع ، می توانید با استفاده از نحو زیر ، جفت مقدار کلید را به دیکشنری ها اضافه کنید:
dict[key] = value
با افزودن یک جفت مقدار کلیدی به دیکشنری به نام usernames ، نحوه عملکرد آن را در عمل بررسی می کنیم:
usernames = {'Sammy': 'sammy-shark', 'Jamie': 'mantisshrimp54'}
usernames['Drew'] = 'squidly'
print(usernames)
# OUTPUT
{'Drew': 'squidly', 'Sammy': 'sammy-shark', 'Jamie': 'mantisshrimp54'}
اکنون می بینیم که دیکشنری با جفت کلید "Drew": "squidly" به روز شده است. از آنجا که ممکن است دیکشنری ها مرتب نشده باشند ، ممکن است این جفت در هر جایی از خروجی دیکشنری ظاهر شود. اگر بعداً در فایل برنامه خود از دیکشنری usernames
اگر دیگر نیازی به دیکشنری خاصی نداریم ، می توانیم از del برای خلاص شدن کامل از آن استفاده کنیم:
del jesse
print(jesse)
وقتی پس از حذف دیکشنری jesse سعی میکنیم print() بگیریم، خطای زیر را دریافت می کنیم:
...
NameError: name 'jesse' is not defined
از آنجا که دیکشنری ها انواع داده های متغیر هستند ، می توان آنها را اضافه ، اصلاح و مواردی را حذف و پاک کرد.