Menu
CoddyTech

İç İç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)) # 0

Her 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) # 150
challenge icon

Gö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: 39

Kendin 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
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

Kendi başına pratik yap: Online GDScript derleyicisi