Menu
CoddyTech

중첩 딕셔너리

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

딕셔너리 값은 또 다른 딕셔너리일 수 있습니다. 중첩 딕셔너리는 관련 데이터를 그룹화합니다. 바깥쪽 키는 레코드의 이름을 지정하고, 각 내부 딕셔너리는 레코드 하나의 필드를 담습니다.

var heroes := {
	"Mia": {"hp": 100, "class": "mage"},
	"Leo": {"hp": 80, "class": "knight"}
}

키를 연결해 내부의 값에 도달하세요. heroes["Mia"]는 Mia의 내부 딕셔너리이고, ["hp"]는 그 안에서 값을 읽습니다. 대입도 같은 방식으로 작동합니다:

print(heroes["Mia"]["hp"]) # 100
heroes["Leo"]["hp"] -= 30 # Leo가 피해를 입습니다
heroes["Mia"]["mana"] = 50 # Mia에만 키-값 쌍을 추가합니다
print(heroes["Mia"])
{ "hp": 100, "class": "mage", "mana": 50 }

레코드 전체를 추가하려면 새 외부 키에 딕셔너리를 할당하세요: heroes["Ana"] = {"hp": 90, "class": "archer"}.

어느 수준에서든 키가 누락되면 오류가 발생합니다. 레코드가 누락될 수 있는 경우, 빈 딕셔너리를 기본값으로 하여 get()을 호출한 다음, 그 결과에 다시 get()을 호출하세요:

print(heroes.get("Zed", {}).get("hp", 0)) # 0

모든 내부 값에 접근하려면 외부 키를 반복하고 각 내부 딕셔너리에서 값을 읽으세요:

var total_hp := 0
for hero in heroes:
	total_hp += heroes[hero]["hp"]
print(total_hp) # 150
challenge icon

챌린지

쉬움

중첩 사전 inventory가 주어집니다. 각 바깥쪽 키는 부서이고, 각 안쪽 키는 품목이며, 각 안쪽 값은 재고 수량입니다.

프로그램은 한 줄을 읽습니다. 쉼표로 구분된 department/item 형식의 조회 항목입니다. 각 조회 항목에 대해 순서대로 한 줄을 출력합니다.

  • 해당 부서에 그 품목이 있으면 조회 항목, 콜론, 공백, 수량을 출력합니다.
  • 부서 또는 품목이 존재하지 않으면 조회 항목 뒤에 : missing을 출력합니다.

그런 다음 모든 부서에 있는 모든 수량의 합계를 Total inventory: 뒤에 출력합니다.

입력이 fruits/apples,meat/beef,fruits/kiwis,candy/gum이면 출력은 다음과 같습니다.

fruits/apples: 12
meat/beef: 7
fruits/kiwis: missing
candy/gum: missing
Total inventory: 39

직접 해보기

extends Node

func _ready():
	var inventory := {
		"fruits": {"apples": 12, "bananas": 4},
		"meat": {"beef": 7, "chicken": 5},
		"dairy": {"milk": 9, "cheese": 2}
	}
	var lookups := OS.read_string_from_stdin().split(",")

	# 각 lookup의 수량을 출력하고, 없으면 missing을 출력하세요

	# 모든 수량의 합계를 출력하세요
	pass
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리와 흐름의 모든 레슨

직접 연습해 보세요: 온라인 GDScript 컴파일러