Tablice słowników
Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 20 z 78.
Gdy masz wiele rekordów z tymi samymi polami, przechowuj je w tablicy słowników: każdy element to jeden rekord.
var enemies := [
{"type": "slime", "hp": 30},
{"type": "orc", "hp": 80},
{"type": "dragon", "hp": 500}
]Indeks wskazuje rekord, a klucz wskazuje pole: enemies[1]["type"] to "orc". Pętla for daje ci jeden słownik na każdą iterację:
for enemy in enemies:
if enemy["hp"] >= 80:
print(enemy["type"])orc
dragonDodaj rekord za pomocą append(). Aby zmienić pole każdego rekordu, przypisz wartość za pośrednictwem zmiennej pętli. Podobnie jak tablice, słowniki są współdzielone, a nie kopiowane, więc enemy jest słownikiem wewnątrz tablicy, a zmiana pozostaje w tym słowniku:
enemies.append({"type": "bat", "hp": 10})
for enemy in enemies:
enemy["hp"] += 5
print(enemies[3]) # { "type": "bat", "hp": 15 }Aby znaleźć rekord według jednego z jego pól, przejdź po elementach pętlą i porównaj je. Zacznij od null, żeby móc stwierdzić, że nic nie pasowało:
var found = null
for enemy in enemies:
if enemy["type"] == "orc":
found = enemy
if found == null:
print("No orc")
else:
print(found["hp"]) # 85print() wyświetla całą tablicę wraz ze wszystkimi zawartymi w niej słownikami: [{ "type": "slime", "hp": 35 }, ...].
Wyzwanie
ŁatwyZbuduj ranking. Program odczytuje liczbę całkowitą n, a następnie n wierszy, z których każdy zawiera imię gracza i wynik oddzielone przecinkiem, na przykład Mia,95.
- Dla każdego wiersza dodaj do tablicy
playerssłownik z kluczami"name"(imię) i"score"(wynik jakoint). - Wypisz tablicę.
- Wypisz
Best:, imię gracza z najwyższym wynikiem oraz wynik w nawiasie. Jeśli dwóch graczy ma ten sam najwyższy wynik, wypisz pierwszego.
Dla danych wejściowych 3, Mia,95, Leo,80 i Ana,97 wynikiem jest:
[{ "name": "Mia", "score": 95 }, { "name": "Leo", "score": 80 }, { "name": "Ana", "score": 97 }]
Best: Ana (97)Spróbuj swoich sił
extends Node
func _ready():
var n := int(OS.read_string_from_stdin())
var players := []
# Wczytaj n graczy do tablicy
# Wypisz tablicę i najlepszego gracza
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