Menu
Coddy logo textTech

딕셔너리 업데이트하기

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]
challenge icon

챌린지

중급

한 줄의 입력을 읽습니다: 초기 딕셔너리에 수행할 작업들이 쉼표로 구분된 리스트입니다. 각 작업은 다음 중 하나입니다:

  • 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을 적용하고, 정렬된 키와 값을 출력합니다.
quiz icon실력 점검

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

로직 및 흐름의 모든 레슨