التكرار عبر القواميس
جزء من قسم المنطق والتدفق في رحلة 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 تمنحك مجموعة المفاتيح فقط أو مجموعة القيم فقط.
التحدي
سهليقوم قاموس scores بربط أسماء الطلاب بدرجات من نوع Int. اطبع ما يلي:
- كل إدخال بتنسيق
<name>: <score>، مرتباً أبجدياً حسب الاسم، إدخال واحد في كل سطر Sum: <total>لمجموع كل القيم (استخدم.valuesوreduce)Above 70: <count>حيثcountهو عدد الإدخالات التي تزيد درجتها عن70تماماً
بالنسبة للقاموس الافتراضي، يكون المخرج هو:
Alice: 85
Bob: 60
Cara: 90
Dan: 72
Sum: 307
Above 70: 3ورقة مرجعية
قم بالتكرار عبر القاموس (dictionary) باستخدام for للحصول على أزواج المفتاح والقيمة (key-value tuples):
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)")
}الوصول إلى المفاتيح أو القيم فقط باستخدام .keys و .values:
prices.keys // مجموعة من المفاتيح
prices.values // مجموعة من القيمجرّب بنفسك
let scores: [String: Int] = [
"Alice": 85, "Bob": 60, "Cara": 90, "Dan": 72
]
// TODO: طباعة المدخلات المرتبة؛ المجموع عبر reduce على .values؛ حساب العناصر > 70
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق والتدفق
1النصوص بعمق
العد والفهارسحالة الأحرف وإزالة الفراغاتالبحث في النصوصتقسيم ودمج النصوصاستبدال النصوص الفرعيةمراجعة - التحقق من اسم المستخدم4المجموعات
إنشاء المجموعاتالاتحاد والتقاطعالطرح والفرق المتماثلالمجموعات الجزئية والشاملةمراجعة - تصفية الـ Tag7مشروع - متتبع العادات
نظرة عامة على المشروعتحديد كمكتمل2النطاقات والخطوات
المغلقة مقابل نصف المفتوحةالخطوة (Stride)دوال النطاقاتالنطاقات في Switchملخص - شبكة التقويم5الدوال من الرتبة العليا - الجزء الأول
MapFilterReduceربط Map و Filter و Reduceمراجعة - إحصائيات الكلمات