딕셔너리 병합
Coddy GDScript 여정의 논리와 흐름 섹션에 포함된 레슨. 78개 중 21번째.
merge()는 다른 딕셔너리의 모든 키-값 쌍을 호출한 딕셔너리에 추가합니다. 다른 딕셔너리에만 있는 키는 끝에 추가됩니다:
var settings := {"volume": 5, "difficulty": "normal"}
var saved := {"difficulty": "hard", "subtitles": true}
settings.merge(saved)
print(settings){ "volume": 5, "difficulty": "normal", "subtitles": true }"difficulty"는 두 사전에 모두 있으며, merge()는 settings에 이미 있던 값을 유지했습니다. 기본적으로 기존 키는 덮어쓰지 않습니다. 두 번째 인수로 true를 전달하면 다른 사전의 값이 우선하도록 할 수 있습니다.
var options := {"volume": 5, "difficulty": "normal"}
options.merge(saved, true)
print(options["difficulty"]) # hardmerge()는 딕셔너리 자체를 변경하고 아무것도 반환하지 않으므로 var result := a.merge(b)는 오류입니다. 두 딕셔너리를 모두 그대로 유지하려면 merged()를 사용하세요. 같은 인수를 받으며 새 딕셔너리를 반환합니다:
var defaults := {"volume": 5, "difficulty": "normal"}
var choice := {"difficulty": "hard"}
var final_settings := defaults.merged(choice, true)
print(final_settings) # { "volume": 5, "difficulty": "hard" }
print(defaults) # { "volume": 5, "difficulty": "normal" }키가 두 딕셔너리에 모두 있고 값을 결합하고 싶을 때, 예를 들어 두 금액을 더하려면 루프를 직접 작성하세요:
var bag := {"gold": 10, "gems": 1}
var loot := {"gold": 5, "keys": 2}
for key in loot:
bag[key] = bag.get(key, 0) + loot[key]
print(bag) # { "gold": 15, "gems": 1, "keys": 2 }챌린지
쉬움게임 업데이트로 새로운 설정이 추가되었습니다. 플레이어가 저장한 설정은 쉼표로 구분된 key=value 쌍으로 한 줄의 입력에서 읽습니다(줄은 비어 있을 수 있습니다). 주어진 코드는 설정을 saved 딕셔너리에 저장합니다.
저장된 설정에서 누락된 항목을 채우세요. 아직 키가 없는 defaults의 모든 쌍을 saved에 추가하되, 플레이어가 선택한 값을 변경하거나 defaults를 변경하지 마세요. 그런 다음 saved를 출력하고, 다음 줄에 defaults를 출력하세요.
입력이 difficulty=hard,volume=8이면 출력은 다음과 같습니다.
{ "difficulty": "hard", "volume": "8", "subtitles": "off", "language": "en" }
{ "difficulty": "normal", "volume": "5", "subtitles": "off", "language": "en" }직접 해보기
extends Node
func _ready():
var defaults := {"difficulty": "normal", "volume": "5", "subtitles": "off", "language": "en"}
var saved := {}
for pair in OS.read_string_from_stdin().split(",", false):
var parts := pair.split("=")
saved[parts[0]] = parts[1]
# saved에 누락된 기본값을 추가한 다음 두 딕셔너리를 모두 출력하세요
pass
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
직접 연습해 보세요: 온라인 GDScript 컴파일러