티스토리 뷰

Swift

[Swift] Dictionary

Ekko0701 2022. 8. 5. 18:17

Dictionary

 

Apple Developer Documentation

 

developer.apple.com

요소가 key - value 쌍인 collection이다. 딕셔너리는 포함된 항목에 대해 빠른 액세스를 제공하는 해시 테이블로, 딕셔너리의 각 요소는 문자열, 숫자와 같은 해시 가능한 유형의 Key를 사용해 식별한다. Key는 중복될 수 없고 자료형은 같아야 한다. Value값은 중복될 수 있지만 자료형은 같아야 한다. 또한 set처럼 정렬되지 않았다.

 

Dictionary 생성
//  빈 딕셔너리 생성
var emptyDict: [Int: String] = [:]
var emptyDict2 = [Int: String]()
var emptyDict3: Dictionary<Int, String> = Dictionary<Int, String>()
var emptyDict4: Dictionary = [Int:String]()

//  초기화된 딕셔너리 생성
var dict1 = [1: "Apple", 2: "Samsung"] // 타입 추론
var dict2: [Int: String] = [1: "Apple", 2: "Samsung"]
var dict3: Dictionary<Int, String> = [1: "Apple", 2: "Samsung"]
var dict4: Dictionary = [1: "Apple", 2: "Samsung"]
var dict5: [String: Any] = ["First": 1, "Second": "two"]    //단, key 값을 Any로 하는 것은 불가능

 

Dictionary 요소 접근
//  2. 딕셔너리 요소 접근
var dict: [Int: String] = [1: "Apple", 2: "Orange"]
print(dict[1]) // Optional("Apple")
print(dict[2]) // Optional("Orange")
print(dict[3]) // nil
print(dict[3, default: "Banana"])  // Banana

print(dict.keys)  // [2, 1]
print(dict.values)// ["Orange", "Apple"]
  • Key값으로 Key에 해당하는 value값에 접근 가능하다. 
  • Key에 대한 값이 없을 수 있으므로 Optional 타입을 반환한다.
  • default를 이용해 기본값을 정해줄 수 있다.
  • keys, values를 이용해 key값과 value값만 접근 가능하다.

 

Dictionary 요소 추가 & 수정
//  딕셔너리에 요소 추가 & 수정
var dict = [1: "Apple", 2: "Orange"]
dict[3] = "Banana"                         // Insert
dict[2] = "Lemon"                          // Update
                                           // [3: "Banana", 1: "Apple", 2: "Lemon"]
dict.updateValue("Kiwi", forKey: 4)        // Insert, return nil
dict.updateValue("Grape", forKey: 3)       // Update, Optinal("Banana")
                                           // [3: "Grape", 4: "Kiwi", 1: "Apple", 2: "Lemon"]
  • Subscript로 값을 추가하거나 수정할 수 있다.
  • 존재하는 Key의 value를 추가하면 value가 업데이트된다.
  • updateValue 메서드도 마찬가지지만 추가하는 경우에는 nil을 반환하고, 값이 수정되는 경우에는 이전 값을 반환한다.

 

Dictionary 요소 삭제
//  딕셔너리 요소 삭제
var dict8 = [1: "Apple", 2: "Orange", 3: "Banana"]
dict8[1] = nil
dict8.removeValue(forKey: 2)
dict8.removeAll()
  • key값의 value를 nil로 함으로써 값 삭제 가능

 

isEmpty, count
//  isEmpty, count
var dict9 = [1: "Apple", 2: "Orange", 3: "Banana"]
dict9.isEmpty   // false
dict9.count     // 3

 

 

For, For - Each
var dict = [1: "Apple", 2: "Orange", 3: "Banana"]

// for
for i in dict {
    print("\(i.key) - \(i.value)")
}

// for
for (key, value) in dict {
    print("\(key) - \(value)")
}

// for each
dict.forEach { (key, value) in
    print("\(key) - \(value)")
}

// for each
dict.forEach {
    print("\($0.key) - \($0.value)")
}
  • Dictionary는 순서가 없기에 순서는 무작위다.

 

'Swift' 카테고리의 다른 글

Swift) Enum 열거형  (1) 2023.01.02
Swift) Struct & Class  (0) 2023.01.02
[Swift] 기초 문법 1 - 입력, 분할, 배열, map(), filter(), reduce()  (0) 2022.07.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함