Map Özellikleri: keys & values
Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 28 / 65.
Map koleksiyonları ile çalışırken, bazen tüm anahtarları veya tüm değerleri ayrı ayrı çıkarmanız gerekir. Dart bunun için iki kullanışlı özellik sunar: .keys ve .values.
.keys özelliği, haritadaki tüm anahtarları içeren yinelenebilir bir nesne döndürürken .values, karşılık gelen tüm değerleri içeren yinelenebilir bir nesne döndürür. Bu özellikler, anahtarları ve değerleri bağımsız olarak işlemeniz gerektiğinde özellikle kullanışlıdır.
Map<String, double> inventory = {
'Laptop': 999.99,
'Mouse': 25.50,
'Keyboard': 75.00
};
Iterable<String> productNames = inventory.keys;
Iterable<double> prices = inventory.values;
print(productNames); // (Laptop, Mouse, Keyboard)
print(prices); // (999.99, 25.5, 75.0)Bu özellikler listeler yerine yinelenebilirler (iterables) döndürdüğü için, listeye özgü işlevselliğe ihtiyacınız varsa .toList() kullanarak bunları listelere dönüştürebilirsiniz. Anahtarların ve değerlerin bu şekilde ayrılması, verilerinizin bir yönünü diğerinden bağımsız olarak analiz etmeniz veya işlemeniz gerektiğinde özellikle yararlıdır.
Görev
KolayKitap koleksiyonlarını analiz ederek başlıklar ve yayın yılları hakkında bilgi çıkaran bir dijital kütüphane sistemini yöneten bir program oluştur. Programın şunları yapması gerekir:
- Kütüphane adını temsil eden bir dize girdisini oku
- Kitap başlıklarını ve yayın yıllarını temsil eden birden çok girdi çifti oku (girdi,
"catalog_done"alınca sona erecektir) - Her kitap başlığını anahtar ve yayın yılını değer olarak depolamak için bir Map oluştur
- Tüm kitap başlıklarını çıkarmak ve bunları bir List'e dönüştürmek için
.keysözelliğini kullan - Tüm yayın yıllarını çıkarmak ve bunları bir List'e dönüştürmek için
.valuesözelliğini kullan - Değerler arasındaki en küçük yılı belirleyerek en eski kitabı bul
- Değerler arasındaki en büyük yılı belirleyerek en yeni kitabı bul
- Aşağıda gösterilen tam biçimde kütüphane analizini yazdır
Örneğin, kütüphane adı "Central Library" ise ve katalogda yılı "To Kill a Mockingbird" olan 1960, yılı "1984" olan 1949, yılı "The Great Gatsby" olan 1925 ve yılı "Harry Potter" olan 1997 bulunuyorsa programınız şunu çıktılar:
Library: Central Library
Book Collection Analysis:
All book titles: [To Kill a Mockingbird, 1984, The Great Gatsby, Harry Potter]
All publication years: [1960, 1949, 1925, 1997]
Total books in collection: 4
Oldest book year: 1925
Newest book year: 1997
Collection span: 72 years
Status: Library catalog analysis completedKütüphane adı "University Library" ise ve katalogda yılı "Pride and Prejudice" olan 1813, yılı "Moby Dick" olan 1851 ve yılı "Brave New World" olan 1932 bulunuyorsa programınız şunu çıktılar:
Library: University Library
Book Collection Analysis:
All book titles: [Pride and Prejudice, Moby Dick, Brave New World]
All publication years: [1813, 1851, 1932]
Total books in collection: 3
Oldest book year: 1813
Newest book year: 1932
Collection span: 119 years
Status: Library catalog analysis completedKütüphane adı "Community Library" ise ve katalogda yılı "The Hobbit" olan 1937, yılı "Dune" olan 1965, yılı "Neuromancer" olan 1984, yılı "The Martian" olan 2011 ve yılı "Klara and the Sun" olan 2021 bulunuyorsa programınız şunu çıktılar:
Library: Community Library
Book Collection Analysis:
All book titles: [The Hobbit, Dune, Neuromancer, The Martian, Klara and the Sun]
All publication years: [1937, 1965, 1984, 2011, 2021]
Total books in collection: 5
Oldest book year: 1937
Newest book year: 2021
Collection span: 84 years
Status: Library catalog analysis completedProgramınız, tüm kitap başlıklarını çıkarmak için .keys özelliğini ve tüm yayın yıllarını çıkarmak için .values özelliğini kullanmalıdır. Her iki iterable'ı da .toList() kullanarak List'lere dönüştürün. En yeni yıldan en eski yılı çıkararak koleksiyon aralığını hesaplayın. Girdi biçimi şu şekilde olacaktır: kütüphane adı, ardından dönüşümlü olarak kitap başlıkları ve yayın yılları (tam sayılara dönüştürülmesi gereken dizeler olarak) ve son olarak "catalog_done".
Kendin dene
import 'dart:io';
void main() {
// Kütüphane adını oku
String? libraryName = stdin.readLineSync();
// Kitap başlıklarını ve yayın yıllarını saklamak için bir Map oluştur
Map<String, int> bookCatalog = {};
// "catalog_done" gelene kadar kitap başlıklarını ve yıllarını oku
while (true) {
String? input = stdin.readLineSync();
if (input == "catalog_done") {
break;
}
String bookTitle = input!;
String? yearInput = stdin.readLineSync();
int publicationYear = int.parse(yearInput!);
bookCatalog[bookTitle] = publicationYear;
}
// TODO: Kodunuzu aşağıya yazın
// .keys özelliğini kullanarak kitap başlıklarını çıkarın ve List'e dönüştürün
// .values özelliğini kullanarak yayın yıllarını çıkarın ve List'e dönüştürün
// En eski ve en yeni yılları bulun
// Koleksiyon süresini hesaplayın
// Kütüphane analizini istenen formatta yazdırın
print("Library: $libraryName");
print("Book Collection Analysis:");
// Çıktı ifadelerinizi buraya ekleyin
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
1İleri Düzey Liste İşlemleri
Liste Özellikleri: first & lastListe Durumu: isEmpty & isNotEmptyBir Listeyi Tersine ÇevirmeListeye Ekleme: insertListeden Silme: removeWhereListede Bulma: indexOfBir Listeyi SıralamaBir Listeyi KarıştırmaÖzet - Liste Düzenleyici4İleri Seviye Map İşlemleri
Map Üzerinde GezinmeAnahtar ve Değer KontrolüMap Özellikleri: keys & valuesKoşullu Ekleme: putIfAbsentMap'ten Öge Kaldırmaİç İçe Map'lerÖzet - Envanter Güncelleme7İleri Seviye Fonksiyonlar
Anonim FonksiyonlarFonksiyonları Argüman Olarak AktarmaClosure'ları AnlamakÖzyinelemeye GirişÖzyinelemeli Fonksiyon: Geri SayımÖzyinelemeli Fonksiyon: FaktöriyelÖzet - Liste İşleyici10Son Meydan Okumalar
Meydan Okuma: Not SıralayıcıMeydan Okuma: Sesli Harf SayacıMeydan Okuma: FizzBuzz2Fonksiyonel Liste İşlemleri
'map' ile Dönüştürme'where' ile Filtreleme'.toList()' Kullanımı'any' ile Koşul Kontrolü'every' ile Koşullar'firstWhere' ile BulmaÖzet - Veri Filtreleme5Proje: Alışveriş Sepeti Hesaplayıcı
Proje KurulumuSepete Ürün Ekleme3Kümeler
Küme Nedir?Küme OluşturmaKümelere Eleman Ekleme ve ÇıkarmaKüme İçinde Eleman KontrolüListeyi Kümeye DönüştürmeKüme BirleşimiKüme KesişimiKüme FarkıÖzet - Benzersiz Davetli ListesiKendi başına pratik yap: Online Dart derleyicisi