Menu
CoddyTech

딕셔너리 배열

Coddy GDScript 여정의 논리와 흐름 섹션에 포함된 레슨. 78개 중 20번째.

같은 필드를 가진 레코드가 많다면 딕셔너리 배열에 저장하세요. 각 요소가 하나의 레코드입니다.

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. 각 줄마다 키가 "name"(이름)과 "score"(int 형식의 점수)인 딕셔너리를 배열 players에 추가하세요.
  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 컴파일러