İç İçe Sözlükler
Coddy'nin GDScript Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 19 / 78.
Sözlükteki bir değer başka bir sözlük olabilir. İç içe sözlük, ilişkili verileri gruplar: dış anahtarlar kayıtların adlarını belirtir ve her iç sözlük bir kaydın alanlarını tutar.
var heroes := {
"Mia": {"hp": 100, "class": "mage"},
"Leo": {"hp": 80, "class": "knight"}
}İçerideki bir değere ulaşmak için anahtarları zincirleyin. heroes["Mia"], Mia'nın iç sözlüğüdür ve ["hp"] bu sözlükten okur. Atamalar da aynı şekilde çalışır:
print(heroes["Mia"]["hp"]) # 100
heroes["Leo"]["hp"] -= 30 # Leo hasar alır
heroes["Mia"]["mana"] = 50 # yalnızca Mia'ya bir anahtar-değer çifti ekler
print(heroes["Mia"]){ "hp": 100, "class": "mage", "mana": 50 }Tam bir kayıt eklemek için yeni bir dış anahtara bir sözlük atayın: heroes["Ana"] = {"hp": 90, "class": "archer"}.
Herhangi bir düzeyde eksik bir anahtar hata oluşturur. Bir kayıt eksik olabilecekse, varsayılan değer olarak boş bir sözlükle get() çağrısını yapın, ardından sonuç üzerinde tekrar get() çağrısını yapın:
print(heroes.get("Zed", {}).get("hp", 0)) # 0Her iç değere ulaşmak için dış anahtarlar üzerinde döngü kur ve her iç sözlükten oku:
var total_hp := 0
for hero in heroes:
total_hp += heroes[hero]["hp"]
print(total_hp) # 150Görev
Kolayİç içe geçmiş inventory sözlüğü verilmiştir: her dış anahtar bir departmanı, her iç anahtar bir ürünü ve her iç değer stoktaki miktarı belirtir.
Program bir satır okur: virgülle ayrılmış department/item biçimindeki aramalar. Her arama için sırasıyla bir satır yazdırın:
- departmanda bu ürün varsa aramayı, iki nokta üst üste işaretini, bir boşluğu ve miktarı
- departman veya ürün mevcut değilse aramanın ardından
: missing
Ardından Total inventory: ifadesini ve her departmandaki tüm miktarların toplamını yazdırın.
fruits/apples,meat/beef,fruits/kiwis,candy/gum girdisi için çıktı şöyledir:
fruits/apples: 12
meat/beef: 7
fruits/kiwis: missing
candy/gum: missing
Total inventory: 39Kendin dene
extends Node
func _ready():
var inventory := {
"fruits": {"apples": 12, "bananas": 4},
"meat": {"beef": 7, "chicken": 5},
"dairy": {"milk": 9, "cheese": 2}
}
var lookups := OS.read_string_from_stdin().split(",")
# Her arama için miktarı veya missing değerini yazdır
# Tüm miktarların toplamını yazdır
pass
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
1String’leri Derinlemesine İnceleme
String MetotlarıString’lerde AramaDeğiştirme ve KırpmaBölme ve BirleştirmeTekrar: Kullanıcı Adı Kontrolü4Sözlükler Bölüm 2
İç İçe SözlüklerSözlük DizileriSözlükleri BirleştirmeSözlükleri KopyalamaTekrar - Frekans Sayacı10İleri Düzey Fonksiyonlar
Birden Fazla Değer DöndürmeLambda Fonksiyonları Bölüm 1Lambda Fonksiyonları Bölüm 2Tekrar - Lambda ile SıralamaÖzyinelemeli Fonksiyonlar Bölüm 1Özyinelemeli Fonksiyonlar Bölüm 2Tekrar - İç İçe Dizilerin Toplamı13Envanter Yönetim Sistemi
Projeye Genel BakışÜrün Ekle2İleri Düzey Karar Verme
Değişkenlerle EşleştirmeEşleştirme KoşullarıDizi KalıplarıSözlük KalıplarıÜyelik KontrolleriÖzet - Komut Ayrıştırıcı5Rehber Uygulaması
Menüyü GörüntüleKişi Ekle8Öğrenci Kayıt Yöneticisi
Proje Genel BakışıÖğrenci Ekle11Üst Düzey Fonksiyonlar
map Metodufilter Metodureduce Metoduany ve allTekrar - E-posta DoğrulayıcıTekrar - Sayı İşleyici3Çok Boyutlu Diziler
2B Dizilere Giriş2B Dizi Elemanlarına Erişim2B Dizilerle İç İçe DöngülerTekrar - 2B DizilerDüzensiz DizilerYaygın 2B Dizi ÖrüntüleriTekrar - Oyun Tahtası6Sözlüklerle Kümeler
Küme Nedir?Küme Olarak SözlükEkleme ve SilmeBirleşim ve KesişimKüme FarkıTekrar: Yinelenenleri Silme9Gelişmiş Veri Toplama
Değerleri ToplamaEn Küçük ve En Büyük Değeri BulmaÖzel SıralamaÖzet - Sözlük SıralayıcıKendi başına pratik yap: Online GDScript derleyicisi