Menu
Coddy logo textTech

딕셔너리 순회하기

Coddy Swift 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 15번째.

for를 사용하여 딕셔너리를 반복하면 각 쌍의 두 부분을 튜플로 제공합니다:

let prices = ["apple": 1, "bread": 3, "milk": 4]
for (item, price) in prices {
    print("\(item) costs \(price)")
}

반복 순서는 보장되지 않습니다. 루프를 두 번 실행하면 항목이 다른 순서로 나타날 수 있습니다. 순서가 중요한 경우, 먼저 정렬하세요:

for (item, price) in prices.sorted(by: { $0.key < $1.key }) {
    print("\(item): \(price)")
}

sorted(by:) 내부의 표현식은 클로저입니다. 이 클로저는 두 개의 쌍($0$1)을 각각의 key 프로퍼티를 기준으로 비교합니다. 클로저는 나중에 별도의 장에서 다루게 되므로, 지금은 딕셔너리를 정렬하는 방법 중 하나로 이해해 두세요.

두 가지 더 유용한 속성: .keys.values는 키만 있는 컬렉션 또는 값만 있는 컬렉션을 제공합니다.

challenge icon

챌린지

쉬움

scores 딕셔너리는 학생의 이름을 Int 점수에 매핑합니다. 다음을 출력하세요:

  1. 각 항목을 <name>: <score> 형식으로, 이름의 알파벳 순서로 정렬하여 한 줄에 하나씩 출력
  2. 모든 값의 합계를 Sum: <total> 형식으로 출력 (.valuesreduce를 사용)
  3. 점수가 70보다 큰 항목의 개수를 Above 70: <count> 형식으로 출력

기본 딕셔너리에 대한 출력 결과는 다음과 같습니다:

Alice: 85
Bob: 60
Cara: 90
Dan: 72
Sum: 307
Above 70: 3

치트 시트

for를 사용하여 딕셔너리를 순회하며 키-값 튜플을 얻습니다:

let prices = ["apple": 1, "bread": 3, "milk": 4]
for (item, price) in prices {
    print("\(item) costs \(price)")
}

순회 순서는 보장되지 않습니다. 순서가 중요하다면 먼저 정렬하세요:

for (item, price) in prices.sorted(by: { $0.key < $1.key }) {
    print("\(item): \(price)")
}

.keys.values를 사용하여 키 또는 값에만 접근할 수 있습니다:

prices.keys    // 키 모음
prices.values  // 값 모음

직접 해보기

let scores: [String: Int] = [
    "Alice": 85, "Bob": 60, "Cara": 90, "Dan": 72
]

// TODO: 정렬된 항목 출력; .values에서 reduce를 사용하여 합계 구하기; 70보다 큰 항목 수 계산
quiz icon실력 점검

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

로직 및 흐름의 모든 레슨