Zagnieżdżone słowniki
Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 19 z 78.
Wartością w słowniku może być inny słownik. Zagnieżdżony słownik grupuje powiązane dane: klucze zewnętrzne nazywają rekordy, a każdy słownik wewnętrzny przechowuje pola jednego rekordu.
var heroes := {
"Mia": {"hp": 100, "class": "mage"},
"Leo": {"hp": 80, "class": "knight"}
}Łącz klucze, aby dotrzeć do wartości wewnątrz. heroes["Mia"] to wewnętrzny słownik Mii, a ["hp"] odczytuje z niego wartość. Przypisania działają tak samo:
print(heroes["Mia"]["hp"]) # 100
heroes["Leo"]["hp"] -= 30 # Leo otrzymuje obrażenia
heroes["Mia"]["mana"] = 50 # dodaje parę tylko do Mia
print(heroes["Mia"]){ "hp": 100, "class": "mage", "mana": 50 }Aby dodać cały rekord, przypisz słownik do nowego klucza zewnętrznego: heroes["Ana"] = {"hp": 90, "class": "archer"}.
Brakujący klucz na dowolnym poziomie jest błędem. Gdy rekordu może brakować, wywołaj get() z pustym słownikiem jako wartością domyślną, a następnie ponownie wywołaj get() na otrzymanym wyniku:
print(heroes.get("Zed", {}).get("hp", 0)) # 0Aby uzyskać dostęp do każdej wewnętrznej wartości, przejdź pętlą po kluczach zewnętrznych i odczytaj wartości z każdego wewnętrznego słownika:
var total_hp := 0
for hero in heroes:
total_hp += heroes[hero]["hp"]
print(total_hp) # 150Wyzwanie
ŁatwyPodano zagnieżdżony słownik inventory: każdy klucz zewnętrzny oznacza dział, każdy klucz wewnętrzny — produkt, a każda wartość wewnętrzna — ilość w magazynie.
Program odczytuje jeden wiersz: ścieżki zapisane jako department/item, oddzielone przecinkami. Dla każdej ścieżki, w podanej kolejności, wypisz jeden wiersz:
- ścieżkę, dwukropek, spację i ilość, jeśli dany dział ma ten produkt
- ścieżkę, po której następuje
: missing, jeśli dział lub produkt nie istnieje
Następnie wypisz Total inventory: , po czym podaj sumę wszystkich ilości we wszystkich działach.
Dla danych wejściowych fruits/apples,meat/beef,fruits/kiwis,candy/gum wynik to:
fruits/apples: 12
meat/beef: 7
fruits/kiwis: missing
candy/gum: missing
Total inventory: 39Spróbuj swoich sił
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(",")
# Wypisz ilość dla każdej wyszukiwanej pozycji albo informację o jej braku
# Wypisz sumę wszystkich ilości
pass
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Łańcuchy znaków — zagadnienia zaawansowane
Metody łańcuchów znakówWyszukiwanie w łańcuchach znakówZastępowanie i przycinanieDzielenie i łączeniePodsumowanie — sprawdzanie nazwy użytkownika4Słowniki, część 2
Zagnieżdżone słownikiTablice słownikówŁączenie słownikówKopiowanie słownikówPodsumowanie – licznik częstotliwości7Typy wyliczeniowe
Czym jest typ wyliczeniowy?Definiowanie typu wyliczeniowegoWartości typu wyliczeniowegoTypy wyliczeniowe w matchPowtórka – sygnalizacja świetlna10Zaawansowane funkcje
Zwracanie wielu wartościFunkcje lambda — część 1Funkcje lambda — część 2Powtórka — sortowanie za pomocą lambdaFunkcje rekurencyjne — część 1Funkcje rekurencyjne — część 2Powtórka — sumowanie zagnieżdżonej tablicy13System zarządzania zapasami
Omówienie projektuDodawanie produktu2Zaawansowane podejmowanie decyzji
Dopasowanie ze zmiennymiStrażnicy dopasowaniaWzorce tablicWzorce słownikówSprawdzanie przynależnościPowtórka — parser poleceń5Aplikacja książki kontaktów
Wyświetlanie menuDodawanie kontaktu8Menedżer danych studentów
Przegląd projektuDodaj studenta3Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DTablice postrzępioneTypowe wzorce tablic 2DPodsumowanie — plansza do gry6Zbiory ze słownikami
Czym jest zbiór?Słownik jako zbiórDodawanie i usuwanieSuma i część wspólnaRóżnica zbiorówPowtórka – usuwanie duplikatów9Zaawansowana agregacja danych
Sumowanie wartościZnajdowanie minimum i maksimumSortowanie niestandardowePodsumowanie – Sortownik słownikówPoćwicz samodzielnie: Kompilator GDScript online