🧺 ساختمان داده‌ها

دیکشنری: دفترچهٔ نمره و شمارش کلمه‌ها

۷ گام

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

grades = {'sara': 18, 'ali': 15}
grades['reza'] = 17           # افزودن / تغییر
print(grades.get('mina', 0))  # خواندن امن
for name, g in grades.items():
    print(name, g)

count = {}
for ch in 'banana':
    count[ch] = count.get(ch, 0) + 1   # الگوی شمارش
  • in روی دیکشنری فقط کلیدها را می‌گردد.
  • کلید باید تغییرناپذیر باشد (رشته، عدد، تاپل)؛ لیست نمی‌تواند کلید باشد.

درس کامل دیکشنری را با ۹ تمرین پله‌پله‌اش هم ببین.

  1. ۱گام ۱

    دیکشنری جفت‌های «کلید ← مقدار» نگه می‌دارد و با آکولاد نوشته می‌شود: {'sara': 18}. به‌جای اندیس عددی، با کلید به مقدار می‌رسیم.

    متغیر grades را برابر {'sara': 18, 'ali': 15} بگذار. بعد نمرهٔ ali را با grades['ali'] چاپ کن.

  2. ۲گام ۲

    افزودن کلید تازه و تغییر مقدار کلید موجود، یک نحو دارند: d[key] = value. اگر کلید نبود اضافه می‌شود، اگر بود مقدارش عوض می‌شود.

    نمرهٔ reza را 17 اضافه کن، نمرهٔ ali را به 16 تغییر بده و در آخر کل grades را چاپ کن.

  3. ۳گام ۳

    grades['mina'] خطای KeyError می‌دهد، چون چنین کلیدی نیست (امتحانش کن!). راه امن، متد get است: grades.get('mina', 0) اگر کلید نبود، مقدار پیش‌فرض 0 را برمی‌گرداند.

    با get نمرهٔ mina را با پیش‌فرض 0 چاپ کن. (خط آزمایشی KeyError را اگر نوشتی، پاک کن.)

  4. ۴گام ۴

    grades.items() جفت‌های (کلید, مقدار) را می‌دهد و با unpacking می‌شود هر دو را در حلقه گرفت: for name, g in grades.items():

    با همین حلقه، هر دانشجو را در یک خط به شکل sara 18 چاپ کن.

  5. ۵گام ۵

    همان تمرین سر کلاس: مقدار هر کلید را می‌شود وسط حلقه عوض کرد.

    دیکشنری scores = {'sara': 7, 'Gholam': 3, 'bahman': 12, 'ali': 20, 'taghi': 18.5} را بساز. با یک حلقه، نمرهٔ کسانی که زیر ۱۰ هستند را ۱۰ کن و نمرهٔ کسانی که بالای ۱۸ هستند را ۲۰. در پایان scores را چاپ کن.

  6. ۶گام ۶

    مهم‌ترین کاربرد دیکشنری شمردن است. الگویش این است: count[x] = count.get(x, 0) + 1. اگر x را قبلاً ندیده باشیم، get صفر می‌دهد و می‌شود ۱.

    یک دیکشنری خالی count = {} بساز و روی حروف 'banana' حلقه بزن تا تعداد هر حرف را بشمارد. در پایان count را چاپ کن.

  7. ۷گام ۷

    حالا همین الگو را در یک تابع بگذار. تابع count_words(text) را بنویس که متن را با split() به کلمه‌ها بشکند و دیکشنری «کلمه ← تعداد» را برگرداند (return). بزرگی و کوچکی حروف مهم نباشد: text.lower().

    مثلاً count_words('the cat THE dog') باید {'the': 2, 'cat': 1, 'dog': 1} برگرداند.

در حال آماده‌سازی ویرایشگر…