딕셔너리 업데이트하기
Coddy Swift 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 14번째.
딕셔너리에 값을 쓰는 방법은 읽는 방법과 동일합니다: 서브스크립트(subscript)를 사용합니다.
var prices: [String: Int] = ["apple": 1]
prices["bread"] = 3 // 키를 추가합니다
prices["apple"] = 2 // 기존 키를 업데이트합니다
prices["apple"] = nil // 키를 제거합니다두 개의 명명된 메서드가 동일한 작업을 더 명시적으로 수행합니다:
prices.updateValue(5, forKey: "milk") // 이전 값 또는 nil을 반환합니다
prices.removeValue(forKey: "bread") // 제거된 값 또는 nil을 반환합니다명명된 메서드들은 이전 값을 반환하며, 이는 키가 이미 존재했는지 여부를 확인해야 할 때 유용합니다.
이전 레슨의 기본 서브스크립트(default-subscript) 패턴은 뮤테이션(mutation)과 완벽하게 연결됩니다. if 문을 작성하지 않고 카운터를 만드는 방법은 다음과 같습니다:
var counts: [String: Int] = [:]
for letter in ["a", "b", "a"] {
counts[letter, default: 0] += 1
}
// counts == ["a": 2, "b": 1]챌린지
중급한 줄의 입력을 읽습니다: 초기 딕셔너리에 수행할 작업들이 쉼표로 구분된 리스트입니다. 각 작업은 다음 중 하나입니다:
set:<key>:<value>추가 또는 업데이트 (value는 정수)add:<key>:<value>기존 값에 값을 더함 (default-subscript 패턴 사용)del:<key>키를 제거
초기에는 비어 있는 [String: Int]에 모든 작업을 순서대로 적용한 후, 키를 알파벳 순서로 정렬하여 한 줄에 하나씩 <key>=<value> 형식으로 출력합니다.
입력이 set:a:5,add:a:3,set:b:1,del:b,add:c:2인 경우, 출력은 다음과 같습니다:
a=8
c=2치트 시트
서브스크립트 또는 명명된 메서드를 사용하여 딕셔너리를 수정합니다:
prices["bread"] = 3 // 추가
prices["apple"] = 2 // 업데이트
prices["apple"] = nil // 제거
prices.updateValue(5, forKey: "milk") // 이전 값 또는 nil을 반환함
prices.removeValue(forKey: "bread") // 제거된 값 또는 nil을 반환함if 문 없이 값을 변경하려면 기본값 서브스크립트(default-subscript) 패턴을 사용하세요:
var counts: [String: Int] = [:]
for letter in ["a", "b", "a"] {
counts[letter, default: 0] += 1
}
// counts == ["a": 2, "b": 1]직접 해보기
let ops = readLine()!.components(separatedBy: ",")
var dict: [String: Int] = [:]
// TODO: 각 연산을 분석하여 set/add/del을 적용하고, 정렬된 키와 값을 출력합니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.