정의
- 요소가 키-값(Key-Value) 쌍인 컬렉션입니다.
개요
- Dictionary는 포함된 항목에 대해 빠른 액세스를 제공하는 일종의 해시 테이블입니다.
- 각 항목은 문자열이나 숫자와 같은 Hash가능한 유형인 키를 사용하여 식별합니다.
- 또한, 해당 키를 사용하여 모든 개체가 될 수 있는 해당 값을 검색합니다.
제약 조건
- 데이터를 키-값 쌍의 형태로 저장하고 관리합니다.
- 배열과 비슷한 목적의 작업을 하지만 순서가 없습니다.
- Dictionary에 저장된 각 항목은 값을 참조하고 접근하는 데 사용되는 유일한 키와 연결되어 있습니다.
- Dictionary의 키는 해시 가능한 타입이어야 합니다.
(Swift의 기본 타입(String, Int, Double, Bool, 등,,)은 해시 가능.)
- Optional, Array, Set도 키로 사용할 수 있습니다.
실습
예제 1 : Swift에서 Dictionary는 Generic 구조체
var x = [Int:String]()
var y : Dictionary<String,String> = [:]
var a1 : [Int:String] = [1:"일", 2:"이", 3:"삼"]
var a2 : Dictionary<Int,String> = [1:"일", 2:"이", 3:"삼"]
var a3 = [1:"일", 2:"이", 3:"삼"]
var b1 : [String:Double] = ["김보통":60.5,"이갈비":42.7,"엄청군":123.4]
var b2 : Dictionary<String,Double> = ["김보통":60.5,"이갈비":42.7,"엄청군":123.4]
var b3 = ["김보통":60.5,"이갈비":42.7,"엄청군":123.4]
let colors = ["빨강":"red", "초록":"green", "파랑":"blue"]
예제 2 : Dictionary의 자료형
Dictionary <Int, String>
var a1 : [Int:String] = [1:"일", 2:"이", 3:"삼"]
var a2 : Dictionary<Int,String> = [1:"일", 2:"이", 3:"삼"]
var a3 = [1:"일", 2:"이", 3:"삼"]
print(type(of:a1))
print(type(of:a2))
print(type(of:a3))
실행결과
//Dictionary<Int, String>
//Dictionary<Int, String>
//Dictionary<Int, String>
Dictionary <String, Double>
var b1 : [String:Double] = ["김보통":60.5,"이갈비":42.7,"엄청군":123.4]
var b2 : Dictionary<String,Double> = ["김보통":60.5,"이갈비":42.7,"엄청군":123.4]
var b3 = ["김보통":60.5,"이갈비":42.7,"엄청군":123.4]
print(type(of:b1))
print(type(of:b2))
print(type(of:b3))
실행결과
//Dictionary<String, Double>
//Dictionary<String, Double>
//Dictionary<String, Double>
Dictionary <String, String>
let colors = ["빨강":"red", "초록":"green", "파랑":"blue"]
print(type(of:colors))
예제 3 : Dictionary 항목 접근/변경
Dictionary <Int, String>
var number : [Int:String] = [1:"일", 2:"이", 3:"삼"]
print(number) // [1: "일", 2: "이", 3: "삼"]
print(number.count) // 3
print(number[1],number[2],number[3]) // Optional("일") Optional("이") Optional("삼")
print(number[1]!,number[2]!,number[3]!) // 일 이 삼
print(number[0]) // nil
number[0] = "영"
print(number) // [0: "영", 1: "일", 3: "삼", 2: "이"]
number[4] = "사"
print(number) // [0: "영", 1: "일", 3: "삼", 2: "이", 4: "사"]
number.updateValue("둘",forKey:2 )
print(number) // [0: "영", 1: "일", 3: "삼", 2: "둘", 4: "사"]
실행결과
// [1: "일", 2: "이", 3: "삼"]
// 3
// Optional("일") Optional("이") Optional("삼")
// 일 이 삼
// nil
// [0: "영", 1: "일", 3: "삼", 2: "이"]
// [0: "영", 1: "일", 3: "삼", 2: "이", 4: "사"]
// [0: "영", 1: "일", 3: "삼", 2: "둘", 4: "사"]
Dictionary <String, String>
var colors = ["빨강":"red", "초록":"green", "파랑":"blue"]
print(colors) // ["파랑": "blue", "빨강": "red", "초록": "green"]
print(colors.count) // 3
print(colors["빨강"],colors["초록"],colors["파랑"]) // Optional("red") Optional("green") Optional("blue")
print(colors["빨강"]!,colors["초록"]!,colors["파랑"]!) // red green blue
print(colors["검정"]) // nil
colors["검정"] = "black"
print(colors) // ["검정": "black", "파랑": "blue", "빨강": "red", "초록": "green"]
colors["보라"] = "Purple"
print(colors) // ["보라": "Purple", "검정": "black", "파랑": "blue", "빨강": "red", "초록": "green"]
colors.updateValue("Green",forKey:"초록" )
print(colors) // ["보라": "Purple", "검정": "black", "파랑": "blue", "빨강": "red", "초록": "Green"]
실행결과
// ["파랑": "blue", "빨강": "red", "초록": "green"]
// 3
// Optional("red") Optional("green") Optional("blue")
// red green blue
// nil
// ["검정": "black", "파랑": "blue", "빨강": "red", "초록": "green"]
// ["보라": "Purple", "검정": "black", "파랑": "blue", "빨강": "red", "초록": "green"]
// ["보라": "Purple", "검정": "black", "파랑": "blue", "빨강": "red", "초록": "Green"]
내용 출처
https://developer.apple.com/documentation/swift/dictionary
https://www.youtube.com/watch?v=oTe5i1ZuzXM
'iOS > Swift 문법 심화 학습' 카테고리의 다른 글
Optional (0) | 2022.04.12 |
---|---|
컬렉션 타입 [Collection Types] (0) | 2022.02.17 |
서브스크립트 [ Subscript ] (0) | 2022.02.15 |
프로퍼티 [ Properties ] (0) | 2022.02.14 |
옵셔널 체이닝 [ Optional Chaining ] (0) | 2022.02.10 |
댓글