0Pricing
Competitive Programming Academy · درس

‏Counter وdefaultdict عمليًا

إحصاء العناصر دون أخطاء المفاتيح المفقودة

‏Counter وdefaultdict عمليًا درس مجاني في Competitive Programming Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Competitive Programming Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.

أصبح العد سهلًا

يظهر عدّ مرات تكرار العناصر في كل مكان تقريبًا في المسابقات. توفر وحدة collections أداتين تجعلانه أمرًا سهلًا. 🧮

مشكلة المفتاح المفقود

ترفع القواميس العادية KeyError عند زيادة قيمة مفتاح غير موجود بعد. أما البنى الخاصة فتزيل عنك هذه المشكلة.

تعرّف إلى Counter

يعدّ Counter عناصر أي كائن قابل للتكرار في سطر واحد، ويخزن تكرار كل عنصر كقيمته. أما المفاتيح المفقودة فتُحسب ببساطة على أنها صفر.

from collections import Counter
freq = Counter(nums)

قراءة عدد التكرارات

استخدم الفهرسة مع Counter كما تفعل مع القاموس، لكن المفتاح المفقود يعيد صفرًا بدلًا من التسبب في توقف البرنامج. وهذا يجعل عمليات البحث آمنة تمامًا.

print(freq[5])
print(freq[999])

العناصر الأكثر شيوعًا

استدعِ most_common للحصول على العناصر مرتبة من الأعلى تكرارًا إلى الأدنى. مرّر رقمًا لتحديد عدد العناصر الأولى التي تريد استلامها.

top3 = freq.most_common(3)

تُجري Counters العمليات الحسابية

يمكنك جمع عدّادين أو طرح أحدهما من الآخر لدمج عمليات العد. يدمج ذلك المفاتيح المتطابقة ويحافظ تلقائيًا على توافق المجاميع.

total = Counter(a) + Counter(b)

تعرّف إلى defaultdict

يوفر defaultdict قيمة افتراضية جديدة لأي مفتاح جديد، فلا تحتاج أبدًا إلى التحقق من وجوده أولًا. وما عليك سوى تزويده بمصنع القيمة الافتراضية.

from collections import defaultdict
count = defaultdict(int)

الزيادة دون شروط حماية

مع defaultdict(int) يبدأ المفتاح المفقود من الصفر، لذا يمكنك زيادته مباشرة. ولن تزدحم حلقتك بشرط in.

for v in nums:
    count[v] += 1

القوائم افتراضيًا

استخدم defaultdict(list) عندما يجمع كل مفتاح قيمًا متعددة. تؤدي الإضافة إلى مفتاح جديد تمامًا إلى بدء قائمة فارغة جديدة.

groups = defaultdict(list)
groups[key].append(item)

Counter أم defaultdict

استخدم Counter عندما تريد عدّ العناصر فقط، واستخدم defaultdict عندما يحتاج كل مفتاح إلى قوائم أو مجموعات أو قيم افتراضية مخصصة. 🎯

الكلمات المتشابهة في سطر واحد

تكون كلمتان متشابهتين في الحروف بالضبط عندما يكون Counter الخاص بكل منهما مساويًا للآخر. وتتعامل المقارنة مع تكرار كل حرف دفعة واحدة.

is_anagram = Counter(s) == Counter(t)

تحقق سريع

تريد عدّ مرات التكرار مع زيادة المفاتيح المفقودة بأمان.

مراجعة

يعدّ Counter العناصر فورًا ويرتبها، بينما يتجاوز defaultdict عمليات التحقق من المفاتيح المفقودة عند التعامل مع الأعداد أو القوائم أو المجموعات. وكلاهما يلغي الشيفرة المتكررة. 🚀

الأسئلة الشائعة

هل درس «‏Counter وdefaultdict عمليًا» مجاني؟

نعم — نص درس «‏Counter وdefaultdict عمليًا» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Competitive Programming Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.

ماذا ستتعلم في «‏Counter وdefaultdict عمليًا»؟

إحصاء العناصر دون أخطاء المفاتيح المفقودة تتمرن على Competitive Programming Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Competitive Programming Academy؟

لا تُشترط خبرة سابقة. Competitive Programming Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «‏Counter وdefaultdict عمليًا»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Competitive Programming Academy هذا؟

نعم. كل درس في Competitive Programming Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. المجموعات للتحقق من العضوية وإزالة التكرار
  2. القواميس كجداول بحث
  3. ‏Counter وdefaultdict عمليًا
  4. التجميع والتصنيف باستخدام Map
← العودة إلى Competitive Programming Academy