Jupyo's Daily Story
콜렉션 타입(Collection Type) - 딕셔너리(Dictionary) 본문
728x90
반응형
딕셔너리(Dictionary)는 순서와 상관없이 콜렉션에 같은 타입의 키(Key)와 같은 타입의 값(Value)를 저장합니다. 각 값은 딕셔너리 내부에서 값에 대한 식별자로 동작하는 유니크한 키와 조합됩니다. 배열의 아이템과 다르게 딕셔너리의 아이템은 특정 순서를 가지고 있지 않습니다. 특정 단어를 찾기위해 사전을 찾는 방법과 같이 식별자를 기준으로 값을 찾을 때 딕셔너리를 사용합니다.
딕셔너리 생성
빈 딕셔너리 생성
배열처럼 초기화 구문을 사용하여 타입을 포함한 빈 딕셔너리를 생성할 수 있습니다.
var namesOfIntegers = [Int: String]()
var countsOfAnimals: [String: Int] = [:]
- namesOfintegers의 키는 Int 타입이고, 값은 String 타입입니다.
- countsOfAnimals의 키는 String 타입이고, 값은 Int 타입입니다.
딕셔너리 리터럴(Dictionary Literal)
배열 리터럴과 비슷한 구문을 가진 딕셔너리 리터럴로 초기화할 수 있습니다.
var airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
- [String: String] 타입 지정하지 않아도 키와 값을 통해 자동 타입 유추가 가능합니다.
딕셔너리 접근과 수정
딕셔너리 값 접근
특정 키로 값을 검색할 때 dictionary[key]를 사용합니다. 만약 키가 없으면 nil 이 반환됩니다. 옵셔널 바인딩을 통해 값을 안전하게 처리할 수 있습니다.
var countryCodes = ["KR": "Korea", "US": "United States"]
if let country = countryCodes["KR"] {
print("Country: \(country)") // "Country: Korea"
}
딕셔너리 값 추가 및 업데이트
새로운 키-값 쌍을 추가하거나 기존의 키의 값을 수정하려면 아래와 같이 사용합니다.
countryCodes["KR"] = "South Korea" // 기존 키의 값 수정
countryCodes["JP"] = "Japan" // 새로운 키-값 추가
updateValue(_:forKey:) 메서드를 사용하여 값을 업데이트할 수도 있습니다.
let oldValue = countryCodes.updateValue("Republic of Korea", forKey: "KR")
print(oldValue) // "South Korea"
print(countryCodes["KR"]) // "Republic of Korea"
- updateValue(_:forKey:) 메서드는 업데이트한 키의 변경 이전의 값을 반환합니다.
딕셔너리 값 삭제
제거할 특정 키의 값을 nil 로 변경하면 제거할 수 있습니다.
countryCodes["JP"] = nil // "JP" 키-값 삭제
removeValue(forKey:) 메서드를 사용하여 제거할 수도 있습니다.
if let removedValue = countryCodes.removeValue(forKey: "KR") {
print("Removed: \(removedValue)") // "Removed: Republic of Korea"
}
- removeValue(forKey:) 메서드는 제거한 키의 값을 반환합니다.
딕셔너리 반복
for-in 을 사용하여 딕셔너리의 모든 키와 값에 반복적으로 접근할 수 있습니다.
for (code, country) in countryCodes {
print("\(code): \(country)")
}
키와 값 컬렉션 접근
- keys: 딕셔너리의 모든 키 배열을 반환합니다.
- values: 딕셔너리의 모든 값 배열을 반환합니다.
let codes = Array(countryCodes.keys) // ["KR", "US"]
let countries = Array(countryCodes.values) // ["Korea", "United States"]
반응형
'Swift' 카테고리의 다른 글
static, class, final class 프로퍼티/메서드 (2) | 2024.10.26 |
---|---|
생명주기 (Lifecycle) (2) | 2024.10.14 |
콜렉션 타입(Collection Type) - 집합(Set) (4) | 2024.10.07 |
콜렉션 타입(Collection Type) - 배열(Array) (2) | 2024.10.07 |
ARC (Automatic Reference Counting) (4) | 2024.10.02 |