Menu
CoddyTech

Массивы словарей

Часть раздела Логика и потоки выполнения путешествия по GDScript на Coddy. Урок 20 из 78.

Если у тебя много записей с одинаковыми полями, храни их в массиве словарей: каждый элемент — это одна запись.

var enemies := [
	{"type": "slime", "hp": 30},
	{"type": "orc", "hp": 80},
	{"type": "dragon", "hp": 500}
]

Индекс выбирает запись, а ключ — поле: enemies[1]["type"] — это "orc". Цикл for даёт тебе по одному словарю за проход:

for enemy in enemies:
	if enemy["hp"] >= 80:
		print(enemy["type"])
orc
dragon

Добавь запись с помощью append(). Чтобы изменить поле каждой записи, присвой значение через переменную цикла. Как и массивы, словари являются общими, а не копируются, поэтому enemy — это словарь внутри массива, и изменение сохраняется в нём:

enemies.append({"type": "bat", "hp": 10})
for enemy in enemies:
	enemy["hp"] += 5
print(enemies[3]) # { "type": "bat", "hp": 15 }

Чтобы найти запись по одному из её полей, пройдись циклом и сравни значения. Начни с null, чтобы понять, если ничего не совпало:

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() показывает весь массив со всеми словарями в нём: [{ "type": "slime", "hp": 35 }, ...].

challenge icon

Задание

Легко

Создай таблицу лидеров. Программа считывает целое число n, затем n строк, в каждой из которых указаны имя игрока и счёт, разделённые запятой, например Mia,95.

  1. Для каждой строки добавь в массив players словарь с ключами "name" (имя) и "score" (счёт в виде int).
  2. Выведи массив.
  3. Выведи Best: , имя игрока с наибольшим счётом и счёт в скобках. Если у двух игроков одинаковый наибольший счёт, выведи первого.

Для входных данных 3, Mia,95, Leo,80 и Ana,97 вывод будет таким:

[{ "name": "Mia", "score": 95 }, { "name": "Leo", "score": 80 }, { "name": "Ana", "score": 97 }]
Best: Ana (97)

Попробуйте сами

extends Node

func _ready():
	var n := int(OS.read_string_from_stdin())
	var players := []

	# Считайте n игроков в массив

	# Выведите массив и лучшего игрока
	pass
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и потоки выполнения

Потренируйтесь самостоятельно: Онлайн-компилятор GDScript