딕셔너리 배열
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
dragonappend()를 사용해 레코드를 추가합니다. 모든 레코드의 필드를 변경하려면 루프 변수에 대입합니다. 배열과 마찬가지로 딕셔너리는 복사되지 않고 공유되므로, 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"]) # 85print()는 배열 안의 모든 딕셔너리를 포함한 배열 전체를 보여 줍니다: [{ "type": "slime", "hp": 35 }, ...].
챌린지
쉬움리더보드를 만드세요. 프로그램은 정수 n을 읽은 다음, 각 줄에 쉼표로 구분된 플레이어 이름과 점수가 있는 n개의 줄을 읽습니다. 예를 들면 Mia,95와 같습니다.
- 각 줄마다 키가
"name"(이름)과"score"(int형식의 점수)인 딕셔너리를 배열players에 추가하세요. - 배열을 출력하세요.
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
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
직접 연습해 보세요: 온라인 GDScript 컴파일러