دیکشنری: کلید و مقدار
- دیکشنری بسازی، بخوانی، اضافه و حذف کنی
- با
inوgetبدون خطا کلید را چک کنی - دیکشنریِ دیکشنری (مثل لیست کالاها) را مدیریت کنی
- روی
items()حلقه بزنی (پیشنمایش درس بعد)
دیکشنری چیست؟
دیکشنری مثل یک دفترچهی تلفن است: برای هر کلید یک مقدار دارد. داخل {} با کلید: مقدار ساخته میشود:
خودت امتحان کن
دیکشنریِ دیکشنری: لیست کالاها
در برنامهی فروشگاه، کلید هر عضو نام کالا است و مقدارش یک دیکشنری کوچک از قیمتها و موجودی:
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}.
چک کردن، گرفتن امن، حذف
خودت امتحان کن
products['cup'] وقتی cup وجود ندارد خطای KeyError میدهد. برای همین قبلش با in چک کن یا از get استفاده کن.
data.get('products', {}) در خط ۲۳ پروژه فایل داده را امن میخواند. خط ۳۷ پروژه با if name not in self.products چک میکند کالا وجود دارد، و خط ۴۷ پروژه با del حذفش میکند.
افزودن کالا
کالای pen را با قیمت خرید ۱۰، قیمت فروش ۱۵ و موجودی ۳ به دیکشنری products اضافه کن. کلیدها: 'buy'، 'sell'، 'qty'.
دیدن راهحل (اول خودت تلاش کن)
products = {} products['pen'] = {'buy': 10, 'sell': 15, 'qty': 3}
فروش از موجودی
۲ عدد pen فروخته شد. موجودی (qty) آن را در خود دیکشنری کم کن.
دیدن راهحل (اول خودت تلاش کن)
products = {'pen': {'buy': 10, 'sell': 15, 'qty': 3}} products['pen']['qty'] -= 2
خواندن امن
دادهی data کلید products ندارد. با get آن را بخوان تا اگر نبود یک دیکشنری خالی بگیری؛ نتیجه را در products بگذار. همین کار را برای sales با پیشفرض لیست خالی بکن.
دیدن راهحل (اول خودت تلاش کن)
data = {'sales': [{'name': 'pen', 'qty': 2, 'total': 30}]} products = data.get('products', {}) sales = data.get('sales', [])
مرور همهی اعضا
خودت امتحان کن
items() جفتهای (کلید، مقدار) را میدهد. درس بعد حلقهها را کامل یاد میگیری.
خط ۱۱۶ پروژه جدول را همینطور پر میکند: for name, p in shop.products.items():.
جاهای خالی را پر کن
این سه خط کالا را اضافه، چک و حذف میکنند:
products] = {'buy': buy, 'sell': sell, 'qty': qty}
if name products:
print('کالا پیدا نشد')
products[name]
آزمون این درس
برای گذراندن این درس حداقل ۸۰٪ جواب درست لازم است. هر چند بار خواستی میتوانی دوباره امتحان بدهی.