Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

التكرار عبر القواميس

جزء من قسم المنطق والتدفق في رحلة Swift على Coddy. الدرس 15 من 56.

تكرار القاموس باستخدام for يمنحك كلا نصفي كل زوج كـ tuple:

let prices = ["apple": 1, "bread": 3, "milk": 4]
for (item, price) in prices {
    print("\(item) costs \(price)")
}

ترتيب التكرار غير مضمون. قم بتشغيل الحلقة مرتين وقد ترى المدخلات بترتيب مختلف. عندما يكون الترتيب مهماً، قم بالفرز أولاً:

for (item, price) in prices.sorted(by: { $0.key < $1.key }) {
    print("\(item): \(price)")
}

التعبير الموجود داخل sorted(by:) هو closure: حيث يقوم بمقارنة زوجين ($0 و $1) بواسطة خاصية الـ key الخاصة بهما. ستحصل الـ closures على فصل خاص بها لاحقاً، أما الآن فتعامل مع هذا كطريقة لفرز القاموس.

خاصيتان مفيدتان إضافيتان: .keys و .values تمنحك مجموعة المفاتيح فقط أو مجموعة القيم فقط.

challenge icon

التحدي

سهل

يقوم قاموس scores بربط أسماء الطلاب بدرجات من نوع Int. اطبع ما يلي:

  1. كل إدخال بتنسيق <name>: <score>، مرتباً أبجدياً حسب الاسم، إدخال واحد في كل سطر
  2. Sum: <total> لمجموع كل القيم (استخدم .values و reduce)
  3. Above 70: <count> حيث count هو عدد الإدخالات التي تزيد درجتها عن 70 تماماً

بالنسبة للقاموس الافتراضي، يكون المخرج هو:

Alice: 85
Bob: 60
Cara: 90
Dan: 72
Sum: 307
Above 70: 3

جرّب بنفسك

let scores: [String: Int] = [
    "Alice": 85, "Bob": 60, "Cara": 90, "Dan": 72
]

// TODO: طباعة المدخلات المرتبة؛ المجموع عبر reduce على .values؛ حساب العناصر > 70
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق والتدفق

تدرّب بنفسك: Playground لـ Swift