تعریف دیکشنری در پایتون

Please login to bookmark Close

تعریف دیکشنری در پایتون

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

بنابراین تا اینجا هر وقت خواستید به یک داده دسترسی داشته باشید، مجبور بودید شماره‌اش را بدانید. در لیست، علی یعنی students[0].

همچنین، این در دنیای واقعی عجیب است. شما در دفترچه‌ی تلفنتان دنبال «شماره‌ی ۴۷» نمی‌گردید؛ دنبال «علی» می‌گردید. دیکشنری دقیقاً همین کار را ممکن می‌کند.

ساختار دیکشنری

به این ترتیب، دیکشنری مجموعه‌ای از جفت‌های کلید و مقدار است. با آکولاد تعریف می‌شود و هر جفت را با دونقطه از هم جدا می‌کنیم.

person = {
    "name": "علی",
    "age": 25,
    "city": "تهران"
}

print(person["name"])
علی
            کلید            مقدار
         ┌─────────┐      ┌─────────┐
         │  name   │ ──►  │   علی   │
         ├─────────┤      ├─────────┤
         │  age    │ ──►  │   25    │
         ├─────────┤      ├─────────┤
         │  city   │ ──►  │  تهران  │
         └─────────┘      └─────────┘

افزودن و تغییر

person["job"] = "برنامه‌نویس"   # کلید جدید
person["age"] = 26              # تغییر مقدار موجود

print(person)

علاوه بر این، دقت کنید که هر دو کار با یک سینتکس انجام می‌شود. اگر کلید نباشد ساخته می‌شود و اگر باشد مقدارش عوض می‌شود. همین موضوع گاهی باعث می‌شود ناخواسته داده‌ای را روی داده‌ی قبلی بنویسید.

خواندن امن با get

اگر کلیدی را بخواهید که وجود ندارد، برنامه متوقف می‌شود:

print(person["email"])
KeyError: 'email'

در کد واقعی، داده‌ای که از کاربر یا از یک سرویس می‌گیرید همیشه کامل نیست. راه‌حل پایتون متد get است:

print(person.get("email"))
print(person.get("email", "ثبت نشده"))
None
ثبت نشده

متد get به جای خطا دادن، مقدار پیش‌فرض برمی‌گرداند. این یکی از همان جزئیاتی است که کد تازه‌کار را از کد حرفه‌ای جدا می‌کند.

حذف کلید

del person["city"]
removed = person.pop("job")

print(removed)

چه چیزی می‌تواند کلید باشد

کلید باید تغییرناپذیر باشد. رشته، عدد و تاپل می‌توانند کلید باشند، ولی لیست نمی‌تواند. در درس قبل دیدید که دلیلش چیست.

مقدار اما هر چیزی می‌تواند باشد؛ حتی لیست یا دیکشنری دیگر:

student = {
    "name": "زهرا",
    "scores": [18, 20, 15],
    "address": {"city": "شیراز", "zip": "71"}
}

print(student["scores"][1])
print(student["address"]["city"])
20
شیراز

این ساختار دقیقاً همان چیزی است که وقتی از یک سرویس داده می‌گیرید تحویل می‌گیرید. پس راحت بودن با دیکشنری، مقدمه‌ی کار با داده‌ی واقعی است.

اشتباهات رایج

کلید تکراری

data = {"a": 1, "a": 2}
print(data)
{'a': 2}

خطایی در کار نیست؛ فقط مقدار دوم روی اولی می‌نشیند. کلیدها در دیکشنری یکتا هستند.

انتظار ترتیب الفبایی

دیکشنری از پایتون ۳٫۷ به بعد، ترتیب درج را حفظ می‌کند، نه ترتیب الفبایی. یعنی هر کلیدی را زودتر اضافه کرده باشید، زودتر می‌آید.

جمع‌بندی

دیکشنری داده را با نام نگه می‌دارد نه با شماره، و همین باعث می‌شود کد خواناتر و نزدیک‌تر به دنیای واقعی باشد. برای خواندن امن، عادت کنید به get.

در درس بعدی یاد می‌گیرید روی دیکشنری حرکت کنید.

برای مطالعه‌ی بیشتر می‌توانید به مستندات رسمی پایتون سر بزنید.

این درس بخشی از دوره آموزش پایتون مقدماتی است.

Please login to bookmark Close
پیشرفت شما در «دوره آموزش پایتون مقدماتی» (60%)
نظرات

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

60%
پیشرفت

سرفصل دوره

فهرست مطالب

سرفصل دوره

تمرین

این قسمت تمرین ندارد!

پاسخ تمرین ها

هنوز برای تمرین‌های این قسمت پاسخی ثبت نشده است!

اشتراک گذاری

چرا بهتره از فیلترشکن استفاده کنید؟

من همه ویدئو ها و پادکست های کُدباز رو توی یوتیوب و ساندکلود و پلتفرم هایی آپلود می‌کنم که اغلب فیلتر هستند.

اغلب آموزش‌ها ویدئو و پادکست دارند. پس اگر می‌خواهید از محتوای سایت بیشترین استفاده رو ببرید نیاز به فیلتر شکن دارید.

توجه داشته باشید که برای خرید از فروشگاه بهتره فیلتر شکن رو خاموش کنید.

تنظیمات

انتخاب زبان
تغییر تم