Menu
Coddy logo textTech

Sözlükleri Yineleme

Coddy'nin Swift Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 15 / 56.

Bir sözlüğü for ile yinelemek, her çiftin her iki yarısını size bir demet (tuple) olarak verir:

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

Yineleme sırası garanti edilmez. Döngüyü iki kez çalıştırdığınızda girdileri farklı bir sırada görebilirsiniz. Sıralama önemli olduğunda, önce sıralayın:

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

sorted(by:) içindeki ifade bir closure'dır: iki çifti ($0 ve $1) key özelliklerine göre karşılaştırır. Closure'lar ileride kendilerine ait bir bölüme sahip olacaklar, şimdilik bunu bir sözlüğü sıralamak için bir tarif olarak görün.

İki kullanışlı özellik daha: .keys ve .values size yalnızca anahtarlardan veya yalnızca değerlerden oluşan koleksiyonu verir.

challenge icon

Görev

Kolay

scores sözlüğü, öğrenci isimlerini Int puanlarıyla eşleştirir. Şunları yazdırın:

  1. Her bir girişi <name>: <score> formatında, isime göre alfabetik olarak sıralanmış şekilde, her satıra bir tane gelecek şekilde
  2. Tüm değerlerin toplamını Sum: <total> olarak (.values ve reduce kullanın)
  3. Above 70: <count> şeklinde, burada count puanı tam olarak 70'ten büyük olan girişlerin sayısıdır

Varsayılan sözlük için çıktı şöyledir:

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

Kopya kağıdı

Anahtar-değer demetlerini (tuples) elde etmek için bir sözlüğü for ile yineleyin:

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

Yineleme sırası garanti edilmez. Sıralama önemli olduğunda önce sıralayın:

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

Yalnızca anahtarlara veya değerlere .keys ve .values ile erişin:

prices.keys    // anahtar koleksiyonu
prices.values  // değer koleksiyonu

Kendin dene

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

// YAPILACAK: sıralanmış girdileri yazdır; .values üzerinde reduce ile topla; 70'ten büyük olanları say
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler