Python Learningاز صفر تا نوشتن پروژه از حفظ
درس ۵ · پایه‌ها

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

حدود ۴۵ دقیقه۴ تمرین۶ سؤال آزمون
بعد از این درس می‌توانی:
  • دیکشنری بسازی، بخوانی، اضافه و حذف کنی
  • با in و get بدون خطا کلید را چک کنی
  • دیکشنریِ دیکشنری (مثل لیست کالاها) را مدیریت کنی
  • روی items() حلقه بزنی (پیش‌نمایش درس بعد)

دیکشنری چیست؟

دیکشنری مثل یک دفترچه‌ی تلفن است: برای هر کلید یک مقدار دارد. داخل {} با کلید: مقدار ساخته می‌شود:

اجرا کن

خودت امتحان کن

Ctrl + Enter

دیکشنریِ دیکشنری: لیست کالاها

در برنامه‌ی فروشگاه، کلید هر عضو نام کالا است و مقدارش یک دیکشنری کوچک از قیمت‌ها و موجودی:

Python
products = {
    'pen':    {'buy': 10, 'sell': 15, 'qty': 3},
    'pencil': {'buy': 4,  'sell': 7,  'qty': 20},
}
print(products['pen']['qty'])   # 3
در پروژه‌ی فروشگاه

این دقیقاً self.products است که در خط ۱۰ پروژه ساخته می‌شود. کالای جدید در خط ۳۳ پروژه اضافه می‌شود: self.products[name] = {'buy': buy, 'sell': sell, 'qty': qty}.

چک کردن، گرفتن امن، حذف

اجرا کن

خودت امتحان کن

Ctrl + Enter
حواست باشد

products['cup'] وقتی cup وجود ندارد خطای KeyError می‌دهد. برای همین قبلش با in چک کن یا از get استفاده کن.

در پروژه‌ی فروشگاه

data.get('products', {}) در خط ۲۳ پروژه فایل داده را امن می‌خواند. خط ۳۷ پروژه با if name not in self.products چک می‌کند کالا وجود دارد، و خط ۴۷ پروژه با del حذفش می‌کند.

تمرین

افزودن کالا

کالای pen را با قیمت خرید ۱۰، قیمت فروش ۱۵ و موجودی ۳ به دیکشنری products اضافه کن. کلیدها: 'buy'، 'sell'، 'qty'.

Ctrl + Enter
دیدن راه‌حل (اول خودت تلاش کن)
products = {}
products['pen'] = {'buy': 10, 'sell': 15, 'qty': 3}
تمرین

فروش از موجودی

۲ عدد pen فروخته شد. موجودی (qty) آن را در خود دیکشنری کم کن.

Ctrl + Enter
دیدن راه‌حل (اول خودت تلاش کن)
products = {'pen': {'buy': 10, 'sell': 15, 'qty': 3}}
products['pen']['qty'] -= 2
تمرین

خواندن امن

داده‌ی data کلید products ندارد. با get آن را بخوان تا اگر نبود یک دیکشنری خالی بگیری؛ نتیجه را در products بگذار. همین کار را برای sales با پیش‌فرض لیست خالی بکن.

Ctrl + Enter
دیدن راه‌حل (اول خودت تلاش کن)
data = {'sales': [{'name': 'pen', 'qty': 2, 'total': 30}]}
products = data.get('products', {})
sales = data.get('sales', [])

مرور همه‌ی اعضا

اجرا کن

خودت امتحان کن

Ctrl + Enter

items() جفت‌های (کلید، مقدار) را می‌دهد. درس بعد حلقه‌ها را کامل یاد می‌گیری.

در پروژه‌ی فروشگاه

خط ۱۱۶ پروژه جدول را همین‌طور پر می‌کند: for name, p in shop.products.items():.

جای خالی

جاهای خالی را پر کن

این سه خط کالا را اضافه، چک و حذف می‌کنند:

products] = {'buy': buy, 'sell': sell, 'qty': qty}
if name  products:
    print('کالا پیدا نشد')
 products[name]

آزمون این درس

برای گذراندن این درس حداقل ۸۰٪ جواب درست لازم است. هر چند بار خواستی می‌توانی دوباره امتحان بدهی.

۱. در p = {'qty': 3} مقدار p['qty'] چیست؟
۲. p['color'] وقتی کلید color وجود ندارد؟
۳. p.get('color', 'red') وقتی کلید نیست؟
۴. کدام خط کالای pen را حذف می‌کند؟
۵. 'pen' in products چه چیزی را چک می‌کند؟
۶. products['pen']['qty'] -= 1 چه می‌کند؟