نوروز 1404مبارک! تا پایان امشب - بیشترین تخفیف تا امروز (%۷۰ و %۹۰) ویژه جشنواره نوروزی 1404 فقط 24 ساعت دریافت

دیکشنری در پایتون چیست و چطور یکی بسازیم؟


راهنمای-دیکشنری-در-پایتون-دیکشنری-چیست-و-چطور-یکی-بسازیم؟

دیکشنری در پایتون چیست و چطور یکی بسازیم؟

پایتون یک زبان برنامه نویسی با ابزارها و قابلیت های زیادی هست. یکی از این قابلیت ها، دیکشنری (Dictionary) هست. دیکشنری در پایتون مجموعه ای از جفت های کلید-مقدار (Key-Value) محسوب میشه. کلیدهای دیکشنری باید یکتا باشن، اما مقدار میتونه از هر نوع داده ای باشه.

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

دیکشنری در پایتون چیست؟

دیکشنری (Dictionary) یک نوع ساختار داده ای در پایتون هست که داده ها رو به صورت جفت های کلید-مقدار (Key-Value) ذخیره میکنه. کلیدها، شناسه های یکتایی برای هر مقدار هستن و مقدار هم داده ای هست که به اون کلید مرتبطه. دیکشنری ها معمولا برای ذخیره اطلاعاتی مثل کلمات و تعاریف استفاده میشن، اما کاربردهای خیلی بیشتری دارن.

دیکشنری ها در پایتون قابل تغییر (Mutable) هستن، یعنی بعد از ساخته شدن میتونن تغییر کنن. همچنین بدون ترتیب (Unordered) هستن، به این معنی که آیتم های داخل دیکشنری به ترتیب خاصی ذخیره نمیشن.

چطور یک دیکشنری در پایتون بسازیم؟

دیکشنری ها با استفاده از آکولاد {} ساخته میشن. در این ساختار:

  • کلید در سمت چپ دو نقطه (:) قرار میگیره
  • مقدار در سمت راست دو نقطه نوشته میشه
  • هر جفت کلید-مقدار با کاما (,) از هم جدا میشن

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

برای ایجاد دیکشنری در پایتون، از نوع داده ی داخلی دیکشنری (Dictionary) استفاده میشه. این نوع داده می تونه انواع مختلفی از اطلاعات مثل اعداد صحیح (Integers)، رشته ها (Strings) و لیست ها (Lists) رو ذخیره کنه.

دیکشنری ها شباهت هایی به لیست دارن، اما به جای ایندکس، از کلیدها برای دسترسی به مقادیر استفاده میکنن. این ویژگی باعث میشه که داده ها رو سریع تر و راحت تر مدیریت کنید.

از تابع dict() در پایتون برای ایجاد یک دیکشنری استفاده میکنید. این تابع دو آرگومان میگیره:

  • آرگومان اول: یک لیست از کلیدها
  • آرگومان دوم: یک لیست از مقادیر

مثالی از نحوه ی ایجاد دیکشنری با استفاده از تابع dict():

# empty dictionary
my_dict = {}
# dictionary with integer keys
my_dict = {1: 'apple', 2: 'ball'}
# dictionary with mixed keys
my_dict = {'name': 'John', 1: [2, 4, 3]}
# using dict()
my_dict = dict({1:'apple', 2:'ball'})
# from sequence having each item as a pair
my_dict = dict([(1,'apple'), (2,'ball')])

پیچیدگی های ایجاد یک دیکشنری

پیچیدگی زمانی برای دیکشنری برابر با O(len(dict)) هست، چون دیکشنری باید ایجاد بشه و تابع هش باید مقدار هش هر عنصر رو محاسبه کنه. پیچیدگی فضایی مورد نیاز برای ایجاد یک دیکشنری برابر با O(N) هست.

تغییر و اضافه کردن عناصر به دیکشنری

در پایتون، دیکشنری ها ساختارهای داده ای قابل تغییر (Mutable) هستن که به شما اجازه میدن جفت های کلید – مقدار (Key-Value) ذخیره کنین. دیکشنری رو میشه با استفاده از سازنده ()dict یا آکولاد {} ایجاد کرد. وقتی دیکشنری ساخته شد، میتونین عناصر رو اضافه، حذف یا به روز رسانی کنین با استفاده از متدهای

()dict.update()،dict.pop و ()dict.popitem.

متد dict.update() برای تغییر یک عنصر در دیکشنری استفاده میشه. این متد یک کلید و مقدار رو به عنوان آرگومان میگیره و مقدار رو به کلید مورد نظر اختصاص میده. اگر کلید در دیکشنری وجود نداشته باشه، اون رو به دیکشنری اضافه میکنه.

برای حذف یک عنصر از دیکشنری، میتونین از متد ()dict.pop استفاده کنین. این متد یک کلید رو به عنوان آرگومان میگیره و جفت کلید – مقدار مربوط به اون رو از دیکشنری حذف میکنه. اگر کلید مورد نظر در دیکشنری وجود نداشته باشه، ()dict.pop یک KeyError برمیگردونه.

متد ()dict.popitem برای حذف یک عنصر تصادفی از دیکشنری استفاده میشه. این متد یک جفت کلید – مقدار تصادفی رو از دیکشنری حذف میکنه و به صورت یک تاپل (Tuple) برمیگردونه. اگر دیکشنری خالی باشه، ()dict.popitem یک KeyError برمیگردونه.

دسترسی به عناصر دیکشنری

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

دو روش برای دسترسی به یک عنصر دیکشنری در پایتون وجود داره:

استفاده از متد ()get

این متد دو آرگومان میگیره: کلید دیکشنری و یک مقدار پیش فرض. اگر کلید در دیکشنری وجود داشته باشه، متد ()get مقدار مرتبط با اون کلید رو برمیگردونه. اگر کلید در دیکشنری وجود نداشته باشه، مقدار پیش فرض برگردونده میشه

استفاده از عملگر []

این عملگر کلید دیکشنری رو به عنوان آرگومان میگیره و مقدار مرتبط با اون رو برمیگردونه. اگر کلید در دیکشنری وجود نداشته باشه، عملگر [] یک KeyError برمیگردونه

# get vs [] for retrieving elements
my_dict = {'name': 'Jack', 'age': 26}
# Output: Jack
print(my_dict['name'])
# Output: 26
print(my_dict.get('age'))
# Trying to access keys that don't exist throws an error
# Output None
print(my_dict.get('address'))
# KeyError
print(my_dict['address'])​

متدها

در پایتون، چندین متد داخلی وجود دارن که به ما اجازه میدن دیکشنری ها رو مدیریت کنیم. این متدها برای اضافه کردن، حذف کردن و تغییر مقدار کلیدهای دیکشنری کاربرد دارن. متدهای دیکشنری یک روش قدرتمند برای کار با دیکشنری ها هستن. با درک نحوه عملکرد این متدها، میتونیم دیکشنری ها رو به شکل موثرتری برای ذخیره و مدیریت داده ها استفاده کنیم.

توضیحاتمتد
تمام عناصر موجود در دیکشنری رو حذف میکنهکلیر () clear
یک کپی از دیکشنری رو برمیگردونه
کپی () copy
مقدار مربوط به کلید مشخص شده رو برمیگردونهگت () get
یک ایندکس برمیگردونه که شامل یک تاپل برای هر جفت کلید – مقدار هستآیتمز () items
یک لیست شامل کلیدهای دیکشنری رو برمیگردونهکلید ها () keys
عنصری که کلید مشخص شده رو داره حذف میکنهپاپ () pop
آخرین جفت کلید – مقدار وارد شده رو حذف میکنهپاپ آیتم () popitem
مقدار مشخص شده برای کلید رو برمیگردونه. اگر کلید در دیکشنری وجود نداشته باشه، مقدار مشخص شده رو برای کلید وارد میکنهست دیفالت () setdefault
کلیدها و مقادیر مشخص شده رو به صورت دیکشنری برمیگردونهفرام کیز () fromkeys
جفت های کلید – مقدار مشخص شده رو در دیکشنری به روز رسانی میکنهآپدیت () update
لیستی از مقادیر موجود در دیکشنری رو برمیگردونهولیوز () values

کامپریهنشن ( Comprehension) دیکشنری در پایتون

کامپریهنشن دیکشنری (Dictionary Comprehension) یک قابلیت توی پایتونه که به شما اجازه میده دیکشنری رو از یک لیست یا یک دیکشنری دیگه فقط در یک خط کد بسازین. این روش خیلی خلاصه و جمع و جوره و میشه ازش برای انجام عملیات مختلف روی دیکشنری ها استفاده کرد. ساختار کامپریهنشن دیکشنری به این صورته که کلید: مقدار بعد از یک حلقه فور داخل آکولاد {} نوشته میشه.

# Dictionary Comprehension

squares = {x: x*x for x in range(6)}

print(squares)

توابع داخلی دیکشنری در پایتون

دیکشنری ها چندین تابع داخلی دارن که به شما اجازه میدن عملیات مختلفی رو روی اون ها انجام بدین. از جمله رایج ترین توابع دیکشنری میشه به آل (all)، اِنی (any)، لِن (len)، کِمپ (cmp) و سورتد (sorted) اشاره کرد.

توضیحاتتوابع دیکشنری
این تابع بررسی میکنه که آیا تمام کلیدهای دیکشنری مقدار True دارن یا نه. اگر همه مقدارها True باشن، مقدار True برمیگردونه. در غیر این صورت False برمیگردونه() all
این تابع بررسی میکنه که آیا حداقل یکی از مقدارهای دیکشنری True هست یا نه. اگر حداقل یک مقدار True باشه، مقدار True برمیگردونه. در غیر این صورت False برمیگردونه() any
این تابع برای مقایسه دو دیکشنری بر اساس کلیدهاشون استفاده میشه. اگر دیکشنری اول کوچیک تر از دیکشنری دوم باشه، مقدار منفی برمیگردونه. اگر دیکشنری اول بزرگ تر باشه، مقدار مثبت برمیگردونه. اگر هر دو دیکشنری برابر باشن، مقدار 0 برمیگردونه() cmp
این تابع برای مرتب سازی دیکشنری در پایتون استفاده میشه. این تابع دو آرگومان میگیره: دیکشنری مورد نظر برای مرتب سازی و کلیدی که مرتب سازی بر اساس اون انجام میشه. این کلید میتونه یک تابع، لیست یا تاپل باشه. خروجی این تابع یک لیست از تاپل هاست که هر تاپل شامل یک کلید و مقدار هست() sorted
این تابع داخلی طول یک شی رو برمیگردونه. میشه ازش روی انواع مختلفی از اشیا مثل رشته ها، لیست ها، دیکشنری ها و … استفاده کرد() len

متد کلید ها (keys) در دیکشنری پایتون

متد کلیدها در دیکشنری پایتون یک شی نمایشی (View Object) برمیگردونه که تمام کلیدهای دیکشنری رو نمایش میده. اشیای نمایشی ویژگی های مشابهی با دیکشنری ای که داخلشون تعریف شدن دارن. مثلا میتونین از یک شی نمایشی برای پیمایش (Iterate) و چاپ تمام کلیدهای دیکشنری استفاده کنین. همچنین میشه بررسی کرد که آیا یک کلید در این شی نمایشی وجود داره یا نه.

numbers = {1: 'one', 2: 'two', 3: 'three'}
# extracts the keys of the dictionary
dictionary keys = numbers.keys()
print(dictionaryKeys)
# Output: dict_keys([1, 2, 3])

متد ولیوز (values) در دیکشنری پایتون

متد ولیوز یک شی نمایشی (View Object) برمیگردونه که لیستی از تمام مقدارهای دیکشنری رو نمایش میده.

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

متد ولیوز با متد کیز (keys) تفاوت داره، چون هیچ آرگومانی نمیگیره و فقط مقدارهای دیکشنری رو برمیگردونه.

marks = {'Physics':67, 'Maths':87}

print(marks.values())

# Output: dict_values([67, 87])

نتیجه گیری

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

سوالات متداول

چطور یک دیکشنری رو در پایتون مرتب کنیم؟

برای مرتب کردن دیکشنری در پایتون بر اساس کلیدها یا مقدارها، میتونین از تابع سورتد (sorted) همراه با تابع لامبدا (lambda function) یا یک تابع کلید سفارشی (custom key function) استفاده کنین. مثلا برای مرتب سازی بر اساس کلیدها:

sorted_dict = dict(sorted(my_dict.items()))

و برای مرتب سازی بر اساس مقدارها:

sorted_dict = dict(sorted(my_dict.items(), key=lambda item: item[1]))

چطور یک لیست رو به دیکشنری در پایتون تبدیل کنیم؟

میتونین با استفاده از کامپریهنشن لیست (list comprehension) یا تابع زیپ (zip) یک لیست رو به دیکشنری تبدیل کنین. برای مثال:

my_list = ['a', 'b', 'c']

میتونه به یک دیکشنری با کلیدها و مقدارها تبدیل بشه:

my_dict = {key: value for key, value in enumerate(my_list)}.

چطور یک دیکشنری رو در پایتون اضافه کنیم؟

برای اضافه کردن یا الحاق عناصر به یک دیکشنری در پایتون، میتونین مستقیما یک جفت کلید – مقدار جدید اختصاص بدین، یا از متد :

update()

متد آپدیت (update) برای ادغام یک دیکشنری دیگه در دیکشنری موجود استفاده کنین. برای مثال:

my_dict['new_key'] = 'new_value' or my_dict.update({'new_key': 'new_value'})

چطور روی دیکشنری ها در پایتون پیمایش کنیم؟

میتونین با استفاده از یک حلقه فور (for loop) روی دیکشنری پیمایش کنین و به کلیدها، مقدارها یا جفت های کلید – مقدار دسترسی داشته باشین. برای مثال، برای پیمایش روی کلیدها:

for key in my_dict.keys()

روی مقدارها:

for value in my_dict.values()

یا روی جفت های کلید – مقدار:

for key, value in my_dict.items().

چطور عناصر رو به یک دیکشنری در پایتون اضافه کنیم؟

برای اضافه کردن عناصر به یک دیکشنری در پایتون، میتونین مستقیما یک جفت کلید – مقدار جدید رو با استفاده از نماد کروشه (subscript notation) اختصاص بدین. برای مثال:

my_dict['new_key'] = 'new_value'

اگر کلید از قبل وجود داشته باشه، مقدار اون به روز رسانی میشه؛ در غیر این صورت، یک جفت کلید – مقدار جدید به دیکشنری اضافه میشه.

چطور یک رشته (String) رو به دیکشنری در پایتون تبدیل کنیم؟

برای تبدیل یک رشته به دیکشنری در پایتون، میتونین از :

json.loads()

تابع لودز (loads) از ماژول جیسون (JSON) استفاده کنین، البته به شرطی که رشته در فرمت JSON باشه. در غیر این صورت، اگه رشته از یک فرمت خاص کلید – مقدار پیروی کنه، میتونین با دستکاری رشته (string manipulation) یا عبارات منظم (regular expressions) اون رو پردازش و به دیکشنری تبدیل کنین. برای مثال:

import json

و بعد:

my_dict = json.loads(my_string)

اگر رشته در فرمت JSON باشه.

در انتهای اگر این مقاله براتون مفید و کاربردی بود، خوشحال میشیم سوالات و نظراتتون رو با ما به اشتراک بگذارین.

نظرات کاربران

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

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

آموزش های پیشنهادی

نوشته های دیگر در دسته بندی مقالات آموزشی

استفاده از افکت های نوری (Lighting Effects) توی پریمیر پرو

پریمیر پرو و افزودن افکت های نوری (Lighting Effects)

در این آموزش به اینکه چطور میشه با ابزار Lighting Effects توی پریمیر پرو یا با استفاده از لایه های نوری مثل (...)
چگونه ویدیو را در پریمیر پرو استبلایز (Stabilize) کنیم؟

چگونه ویدیو را در پریمیر پرو استبلایز (Stabilize) کنیم؟

پریمیر پرو یه ابزار پایدارسازی (Stabilizer) ساده و قدرتمند داره که با یه کلیک فعال میشه. در این مقاله به هر چیزی (...)
چگونه-در-پریمیر-پرو-کالر-گرید-(Color-Grade)-کنیم؟

چگونه در پریمیر پرو کالر گرید (Color Grade) کنیم؟

پنل Lumetri Color توی پریمیر پرو جاییه که همه ابزارهای مربوط به رنگ بندی رو میتونین پیدا کنین. در این مقاله به (...)
آموزش هک

آموزش هک