Post

[Swift] Dictionary

[Swift] Dictionary

자바의 Map 배열과 유사

  • key 와 value 로 데이터를 저장
특징Swift DictionaryJava Map
키-값 쌍 저장Dictionary<Key, Value>Map<Key, Value>
키는 고유중복 불가중복 불가
값 중복 가능가능가능
값 접근dict[key]map.get(key)
값 변경dict[key] = newValuemap.put(key, value)
  1. 딕셔너리 생성
    1
    2
    3
    4
    5
    
    var fruits: [String: Int] = [
     "Apple": 3,
     "Banana": 5,
     "Cherry": 7
    ]
    
    • key : String 타입
    • value : Int 타입
  2. 값 읽기
    1
    2
    3
    
    let appleCount = fruits["Apple"] // Optional(3)
    print(appleCount)                // 출력: Optional(3)
    print(appleCount!)               // 출력: 3 (강제 언래핑)
    
    • 값 날것그대로 가져오려면 !로 언래핑해서 가져오기
  3. 값 추가 및 수정
    1
    2
    
    fruits["Orange"] = 4 // 키 "Orange"와 값 4 추가
    fruits["Banana"] = 10 // 키 "Banana"의 값을 10으로 수정
    
  4. key와 value 반복문
    1
    2
    3
    4
    5
    6
    7
    
    for (key, value) in fruits {
     print("\(key): \(value)")
    }
    // 출력:
    // Apple: 3
    // Banana: 10
    // Orange: 4
    

반환값이 옵셔널인 이유

1
let unknown = fruits["Pineapple"] // nil

key가 존재하지 않는 값일 수 있기 때문에

Grouping Dictionary

일반 Dictionary와 key,Value 로 저장한다는것은 같지만 생성 방법, 구조 가 다름 (다른 배열이라 생각하자)

구조

1
Dictionary(grouping: <배열>, by: { <기준 클로저> })

예제

1
2
3
4
5
6
7
8
9
10
11
let fruits = [
    "Apple",
    "Banana",
    "Cherry",
    "Blueberry",
    "Avocado"
]
// 일 때 

let groupedFruits = Dictionary(grouping: fruits, by: { $0.first! })
// $0.first!는 각 문자열의 첫 글자를 기준으로 그룹화
1
2
3
4
5
6
[
    "A": ["Apple", "Avocado"],
    "B": ["Banana", "Blueberry"],
    "C": ["Cherry"]
]
// A,B,C가 key , []이 value
This post is licensed under CC BY 4.0 by the author.