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.
Görev
Kolayscores sözlüğü, öğrenci isimlerini Int puanlarıyla eşleştirir. Şunları yazdırın:
- Her bir girişi
<name>: <score>formatında, isime göre alfabetik olarak sıralanmış şekilde, her satıra bir tane gelecek şekilde - Tüm değerlerin toplamını
Sum: <total>olarak (.valuesvereducekullanın) Above 70: <count>şeklinde, buradacountpuanı tam olarak70'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: 3Kopya 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 koleksiyonuKendin 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
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
1Stringler Derinlemesine
Sayma ve İndekslerBüyük-Küçük Harf ve KırpmaStringlerde AramaBölme ve BirleştirmeAlt Stringleri DeğiştirmeÖzet - Kullanıcı Adı Kontrolü4Kümeler
Küme OluşturmaBirleşim ve KesişimFark ve Simetrik FarkAlt Küme ve Üst KümeÖzet - Etiket Filtresi7Proje - Alışkanlık Takibi
Projeye Genel BakışTamamlandı Olarak İşaretle10Proje - Quiz Motoru
Projeye Genel BakışSoruları Sorma2Aralıklar ve Adımlar
Kapalı ve Yarı AçıkStride (Adım)Aralık MetotlarıSwitch İçinde AralıklarÖzet - Takvim Izgarası5Yüksek Mertebeden Fonksiyonlar Bölüm 1
MapFilterReduceMap, filter, reduce zincirlemeÖzet - Kelime İstatistikleri3Sözlükler
Sözlük Tanımlamaİsteğe Bağlı AramaSözlükleri GüncellemeSözlükleri YinelemeDeğerleri GruplandırmaÖzet - Envanter6Yüksek Seviyeli Fonksiyonlar Pt. 2
compactMapflatMapsorted(by:)İşlem Hatları OluşturmaÖzet - Liderlik Tablosu