Menu
CoddyTech

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
dragon

Dodaj 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"]) # 85

print() wyświetla całą tablicę wraz ze wszystkimi zawartymi w niej słownikami: [{ "type": "slime", "hp": 35 }, ...].

challenge icon

Wyzwanie

Łatwy

Zbuduj 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.

  1. Dla każdego wiersza dodaj do tablicy players słownik z kluczami "name" (imię) i "score" (wynik jako int).
  2. Wypisz tablicę.
  3. 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
quiz iconSprawdź się

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

Poćwicz samodzielnie: Kompilator GDScript online