در پایتون 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" است دریافت می کنیم.
مقادیر باقی مانده در دیکشنری sammy را می توان به طور مشابه با استفاده از یک فرمت یکسان فراخوانی کرد:
sammy['followers']
# Returns 987
sammy['online']
# Returns True
با استفاده از جفت های کلید-مقدار دیکشنری، می توانیم کلیدها را برای بازیابی مقادیر ارجاع دهیم.
استفاده از متدها برای دسترسی به مقادیر دیکشنری
علاوه بر استفاده از کلیدها برای دسترسی به مقادیر ، می توانیم با برخی از متدهای داخلی نیز کار کنیم:
dict.keys()
dict.values()
dict.items()
برای بازگشت کلیدها ، از متد () dict.keys استفاده می کنیم. در مثال ما ، از نام متغیر استفاده می شود و sammy.keys () می باشد. بیایید آن را به متد print () منتقل کنیم و خروجی را نگاه کنیم:
print(sammy.keys())
# OUTPUT
dict_keys(['followers', 'username', 'online'])
خروجی دریافت می کنیم که کلیدها را در یک شیء نمای تکراری از کلاس dict_keys قرار می دهد. سپس کلیدها در قالب یک لیست چاپ می شوند.
از این روش می توان برای پرس و جو در دیکشنریها استفاده کرد. به عنوان مثال ، می توانیم به کلیدهای مشترک بین دو ساختار داده دیکشنری نگاهی بیندازیم:
sammy = {'username': 'sammy-shark', 'online': True, 'followers': 987}
jesse = {'username': 'JOctopus', 'online': False, 'points': 723}
for common_key in sammy.keys() & jesse.keys():
print(sammy[common_key], jesse[common_key])
دیکشنری sammy و دیکشنری jesse هر کدام یک دیکشنری مشخصات کاربر هستند.
پروفایل آنها دارای کلیدهای متفاوتی است ، زیرا Sammy دارای یک پروفایل اجتماعی با دنبال کنندگان مرتبط است و Jesse دارای یک پروفایل بازی با نقاط مرتبط است. دو کلید مشترک آنها username و online است که هنگام اجرای این برنامه کوچک می توانیم آنها را پیدا کنیم:
sammy-shark JOctopus
True False
مطمئناً می توانیم برنامه را بهبود بخشیم تا خروجی خواناتر شود ، اما این نشان می دهد که dict.keys () می تواند برای بررسی در دیکشنریهای مختلف مورد استفاده قرار گیرد تا ببیند آنها مشترک هستند یا خیر. این به ویژه برای دیکشنری های بزرگ مفید است.
به طور مشابه ، می توانیم از روش dict.values () برای پرسیدن مقادیر در فرهنگ لغت sammy ، که به عنوان sammy.values () ساخته می شود ، استفاده کنیم. بیایید آنها را چاپ کنیم: