آشنایی با نوع داده ی دیکشنری در زبان برنامه نویسی پایتون


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

menu = {"breakfast":"egg", "lunch":"rice", "dinner":"salad"}

در این جا یک آبجکت از نوع دیکشنری ساخته ایم که ۳ آیتم در آن قرار گرفته است. دقت کنید که کلیدها و مقادیر چگونه با هم جفت شده اند. ابتدا کلید می آید و پس از آن علامت دو نقطه (:) و سپس مقدار منتسب شده به کلید قرار داده می شود. در این جا کلیدها استرینگ هایی با مقادیر breakfast، lunch، و dinner هستند. برای انتخاب کلیدها باید دو نکته ی کلی را مدنظر قرار داد:

۱- کلیدها باید یکتا باشند. برای نمونه در مثال بالا نباید دو کلید با شناسه ی یکسان breakfast قرار دهیم، چرا که در این صورت مفسر پایتون آخرین مقداری را که به کلید مورد نظر منتسب شده است را در نظر می گیرد و سایر مقادیر را نادیده می گیرد. بنابراین بهتر است از همان ابتدا به هر کلید تنها یک مقدار را منتسب کنیم.

۲- کلیدها باید از نوع آبجکت های تغییرناپذیر باشند. برای نمونه، در مثال بالا برای انتخاب کلیدها از نوع داده ی استرینگ استفاده کردیم که پیش از این گفتیم از آبجکت ها یا اشیاء تغییرناپذیر در زبان پایتون هستند.  با فراخوانی نام دیکشنری، می توانیم به محتوای آن دست پیدا کنیم:

>>> menu
{'dinner': 'salad', 'breakfast': 'egg', 'lunch': 'rice'}

حال اگر بخواهیم با استفاده از یک کلید به مقدار آن در این دیکشنری دسترسی پیدا کنیم به شکل زیر عمل می کنیم:

>>> menu['lunch']
'rice'

همان طور که می بینید ابتدا شناسه ی منتسب شده به آبجکت دیکشنری که در این جا menu است می آوریم و سپس کلید مورد نظر را در میان علامت های [ ] قرار می دهیم. اگر بخواهیم به لیستی از کلیدهای مربوط به یک آبجکت دیکشنری دسترسی پیدا کنیم، از فانکشنی تحت عنوان ()keys استفاده می کنیم. برای مثال در این جا داریم:

>>> menu.keys()
dict_keys(['dinner', 'breakfast', 'lunch'])

از طریق حلقه یی از جنس for نیز می توان به مقادیر مربوط به هر یک از کلیدهای بالا دسترسی پیدا کرد:

>>> for item in menu.keys():
	print ("We have " + menu[item] + " for " + item + ".")

خروجی حاصل از دستور مرکب بالا به شکل زیر است:

We have salad for dinner.
We have egg for breakfast.
We have rice for lunch.

گفتیم که نوع داده ی دیکشنری تغییرپذیر است. برای تغییر در محتوای یک آبجکت دیکشنری، می توان به شکل زیر عمل کرد:

>>> menu["lunch"] = "meat"
>>> menu
{'dinner': 'salad', 'breakfast': 'egg', 'lunch': 'meat'}

در این جا با استفاده از کلید مورد نظر آیتم مورد نظر را از دیکشنری انتخاب کرده ایم و مقدار جدیدی را به آن منتسب کرده ایم. هم چنین برای ایجاد تغییر در محتوای یک آبجکت دیکشنری می توان از فانکشن ()update به صورت زیر استفاده کرد:

>>> menu.update({"breakfast":"milk" , "snack":"nut"})
>>> menu
{'dinner': 'salad', 'breakfast': 'milk', 'snack': 'nut', 'lunch': 'meat'}

فانکشن ()update که روی یک آبجکت از نوع دیکشنری -در این جا menu- فراخوانی می شود، یک شیء دیکشنری با حداقل یک جفت کلید و مقدار را به عنوان آرگومان ورودی می گیرد و در صورتی که کلیدهای موجود در آرگومان فانکشن در دیکشنری menu باشند، مقدار آن ها را جایگزین مقدار جدید می کند و در غیر اینصورت آیتم جدید را با استفاده از جفت کلید و مقدار جدید به دیکشنری menu اضافه می کند. برای مثال در این جا کلید breakfast از قبل در دیکشنری menu وجود داشت، بنابراین فقط مقدار آن آپدیت شده است، اما قبلاً آیتمی با کلید snack در این دیکشنری وجود نداشته و فانکشن update این جفت کلید و مقدار جدید را به آن اضافه می کند.

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
سلام چرا توی کد زیر از ()keys استفاده کردید؟
:()for item in menu.keys
("." + print ("We have " + menu[item] + " for " + item
بدون استفاده از keys نتیجه هیچ فرقی نمیکنه
محمدهادی
محمدهادی
انقد قابلیت های پایتون زیاد شده و هرکاری میتونی با اشیا بکنی که وقتی در عمل میخوای یک برنامه بنویسی ، یادت میره که چنین قابلیتایی وجود داره و ازش استفاده کنی!
پایتون وقتی خوبه که از این قابلیتاش استفاده کنی. انقد باید تمرین کنی که ملکه ی ذهن باشه. و اینکه نباید برای ی مدت کنار بذاریو دوباره برگردی.
دارم به خودم میگم اینارو :| :|
mahdi66
mahdi66
اگه لطف کنید در یه دوره ی زمانی مشخص اموزشهای جدید را بزارید واقعا عالی میشه و ما هم میتونیم بیشتر و با برنامه از اموزشهای خوبتون استفاده کنیم
مثلا یه شنبه به شنبه هر هفته یا یه تاریخ مشخص
sep
sep
سلام نرگس خانم خیلی دستتون درد نکنه من واقعا استفاده کردم، اجرتون با اباعبدالله، کلاس خصوصی هم می زارید؟
aherehef
aherehef
سلام خسته نباشید از امیدوارم همینطور به تلاشتون ادامه بدید و ما رو بهره مند کنید.ممنون
mr tiel
mr tiel
خسته نباشید میخواستم بدونم چند جلسه آموزش دیگه مونده و کی تموم میشه خیلی ممنون
lark
lark
مطلب جدید کی منتشر میشه ؟ آموزش خوب و روانی هست برای من مفید بوده لطفا ادامه بدید با شتاب بیشتر.ممنونم