[Swift] 딕셔너리(Dictionary), 선언, count, isEmpty, 추가, 수정, 삭제, for ~ in, keys, values

2024. 7. 7. 09:04·[Programming Language]/[Swift]

1. 딕셔너리 (Dictionary)

딕셔너리(Dictionary)는 집합과 동일하게 순서를 갖지 않는 콜렉션이다. 이는 키(key), 값(value) 쌍으로 이뤄지고 딕셔너리 내에 키 값은 고유하다.

1-1. 딕셔너리 선언(생성)

  • var myDict1 = [타입: 타입]( )
  • var myDict2 = [key1: value1, key2: value2, key3: value3...]
  • var myDict3: Dictionary<타입, 타입> = [:]
  • var myDict4: [타입: 타입] = [:]
  • var myDict5 = Dictionary<타입, 타입>( )
let myDict1 = [String: String]()
let myDict2 = ["name": "Semin", "location": "Won-Ju"]
let myDict3: Dictionary<String, Bool> = [:]
let myDict4: [String: Int] = [:]
let myDict5 = Dictionary<String, Character>()

print(type(of: myDict1), myDict1) // Dictionary<String, String> [:]
print(type(of: myDict2), myDict2) // Dictionary<String, String> ["name": "Semin", "location": "Won-Ju"]
print(type(of: myDict3), myDict3) // Dictionary<String, Bool> [:]
print(type(of: myDict4), myDict4) // Dictionary<String, Int> [:]
print(type(of: myDict5), myDict5) // Dictionary<String, Character> [:]

위 방법을 사용하여 딕셔너리를 선언할 수 있다. 이중 myDict1, myDict2를 선언하는 방법이 제일 많이 사용된다. 비어있는 배열, 집합은 []를 사용하여 나타냈지만 비어있는 딕셔너리는 [:]를 사용하여 나타낼 수 있다.

1-2. count

배열, 집합과 동일하게 요소의 개수를 반환한다.

let myDict1 = [String: Int]()
let myDict2 = ["age": 25, "height": 175]

print(myDict1, myDict1.count) // [:] 0
print(myDict2, myDict2.count) // ["age": 25, "height": 175] 2

1-3. isEmpty

이것도 배열, 집합과 마찬가지로 딕셔너리가 비어있으면 true, 그렇지 않으면 false를 반환한다.

let myDict1 = [String: Int]()
let myDict2 = ["age": 25, "height": 175]

print(myDict1.isEmpty) // true
print(myDict2.isEmpty) // false

1-4. 요소 추가 및 수정

1-4-1. 키 값을 사용하여 추가 및 수정

  • 딕셔너리[key] = value

위 형태를 사용하여 딕셔너리에 값을 추가할 수 있다. 만약 이미 존재하는 키 값이라면 기존의 value 값이 새로운 값으로 갱신된다.

var myDict = ["age": 25, "height": 175]

myDict["weight"] = 75 // 새로운 값 추가
print(myDict) // ["age": 25, "height": 175, "weight": 75]

myDict["age"] = 26 // 기존 값 갱신
print(myDict) // ["age": 26, "height": 175, "weight": 75]

1-4-2. updateValue(_, forKey: ) 메서드를 사용하여 추가 및 수정

  • 딕셔너리.updateValue(value, forKey: key)

updateValue 메서드는 딕셔너리에 기존 키값이 존재하면 그에 대응되는 값을 수정하고, 존재하지 않다면 새로운 값을 추가한다. value는 추가할 값을 뜻하고 key는 키값을 뜻한다. 또한 이 메서드는 수정 전의 값을 반환하는데 만약 키가 존재하지 않아 새로운 값이 추가되는 경우에는 nil 값이 반환된다. 이처럼 nil 값이 반환될 수 있으므로 이는 Optional 타입의 값을 반환한다.

var myDict = ["age": 25, "height": 175]

print(myDict.updateValue(75, forKey: "weight")) // nil
print(myDict) // ["age": 25, "height": 175, "weight": 75
print()

print(myDict.updateValue(26, forKey: "age")) // Optional(25)
print(myDict) // ["age": 26, "height": 175, "weight": 75

1-5. 요소 삭제

1-5-1. removeValue(forKey: ) 메서드를 사용하여 삭제

removeValue 메서드도 updateValue 메서드와 동일하게 키에 대응되는 값이 존재하면 삭제를 하고 삭제한 값을 Optional 타입으로 반환하고, 존재하지 않는다면 nil 값을 반환한다.

var myDict = ["age": 25, "height": 175]

print(myDict.removeValue(forKey: "age")) // Optional(25)
print(myDict) // ["height": 175]

print(myDict.removeValue(forKey: "age")) // nil
print(myDict) // ["height": 175]

1-5-2. nil 값을 사용하여 삭제

특정 key에 대응되는 값에 nil을 저장하면 해당 값이 삭제된다.

var myDict = ["age": 25, "height": 175]

myDict["height"] = nil // "height": 175 삭제
print(myDict) // ["age": 25]

1-5-3. removeAll() 메서드를 사용하여 삭제

이 메서드를 사용하면 딕셔너리 요소 전체를 삭제할 수 있다.

var myDict = ["age": 25, "height": 175]

myDict.removeAll()
print(myDict) // [:]

1-5-4. [:]를 사용하여 빈 딕셔너리로 초기화

앞서 빈 딕셔너리는 [:] 형태로 나타낸다 하였는데 이를 사용하면 기존 딕셔너리를 빈 딕셔너리로 초기화할 수 있다.

var myDict = ["age": 25, "height": 175]

myDict = [:]
print(myDict) // [:]

1-6. for ~ in

배열(Array), 집합(Set)과 동일하게 딕셔너리도 for ~ in 반복문을 사용하여 요소 전체에 접근할 수 있다. 이때 반복 변수는 (key, value) 형태의 튜플로 사용해야 한다.

var myDict = ["age": 25, "height": 175, "weight": 75]

for (key, value) in myDict {
    print(key, value)
}

/*
 age 25
 height 175
 weight 75
 */

1-7. keys

keys 속성을 사용하면 딕셔너리의 전체 키 값에 대해서만 접근할 수 있다.

var myDict = ["age": 25, "height": 175, "weight": 75]

print(myDict.keys) // ["age", "height", "weight"]


for k in myDict.keys {
    print(k)
}
/*
 age
 height
 weight
 */

1-8. values

values 속성을 사용하면 키 값에 대응되는 값에 대해서만 접근할 수 있다.

var myDict = ["age": 25, "height": 175, "weight": 75]

print(myDict.values) // [25, 175, 75]


for v in myDict.values {
    print(v)
}

/*
 25
 175
 75
 */

딕셔너리(Dictionary) 역시 Python에서 자주 사용했던 것인데 Swift에도 존재하니 반갑다.

키-값 구조는 JSON 등 정말 자주 사용되는 형식이므로 내용을 잘 기억해두어야겠다.

 

끝!

저작자표시 비영리 변경금지 (새창열림)

'[Programming Language] > [Swift]' 카테고리의 다른 글

[Swift] split과 components의 차이점  (0) 2024.07.12
[Swift] 반복문(for~in, stride, while, repeat~while), 조건문(if, if~else if ~else, defer, switch, fallthrough, binding, where, guard), break, continue, defer, 라벨(label)  (1) 2024.07.08
[Swift] 집합(Set), 집합 선언, count, isEmpty, 추가(insert), 삭제(remove), contain, for ~ in, 집합 연산, isSuperset, isSubset, isDisjoint  (0) 2024.07.06
[Swift] 배열(Array), 배열 선언 방법, 추가, 수정, 삭제, count, isEmpty, for ~ in  (0) 2024.07.05
[Swift] 문자열(Strings), 문자열 내에 변수 출력 방법, 여러줄 문자열, 문자열 결합  (1) 2024.07.03
'[Programming Language]/[Swift]' 카테고리의 다른 글
  • [Swift] split과 components의 차이점
  • [Swift] 반복문(for~in, stride, while, repeat~while), 조건문(if, if~else if ~else, defer, switch, fallthrough, binding, where, guard), break, continue, defer, 라벨(label)
  • [Swift] 집합(Set), 집합 선언, count, isEmpty, 추가(insert), 삭제(remove), contain, for ~ in, 집합 연산, isSuperset, isSubset, isDisjoint
  • [Swift] 배열(Array), 배열 선언 방법, 추가, 수정, 삭제, count, isEmpty, for ~ in
Semincolon
Semincolon
It seems small, that semicolon is a big deal.
  • Semincolon
    Semincolon
    Semincolon
  • 전체
    오늘
    어제
    • 분류 전체보기 (133)
      • [Programming Language] (78)
        • [JSP] (6)
        • [Swift] (23)
        • [SwiftUI] (16)
        • [Python] (22)
        • [C언어] (6)
        • [Kotlin] (4)
        • [C#] (1)
      • [Frame Work] (5)
        • [Flutter] (4)
        • [Spring Boot] (1)
      • [Projects] (3)
        • [Android][Kotlin] 공유 캘린더(20.. (1)
        • [Unity] 인내의 숲(2024.03) (2)
      • [DB] (15)
        • - Oracle (15)
      • [Programmers] (25)
        • - SQL (25)
      • [ETC] (2)
      • Today's Learning (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Semincolon
[Swift] 딕셔너리(Dictionary), 선언, count, isEmpty, 추가, 수정, 삭제, for ~ in, keys, values
상단으로

티스토리툴바