본문 바로가기
IOS/Swift

[Swift] 콜렉션(Collection) 타입 (3) - 딕셔너리(Dictionary)

by 얘리밍 2022. 12. 27.
320x100
728x90

 

 

📌 딕셔너리(Dictionaries)

  • 순서와 상관없이 콜렉션에 같은 타입의 키(key)와 같은 타입의 값(value)를 저장함.
  • 특정 순서를 갖고 있지 않음
  • 식별자를 기준으로 값을 찾을 때 유용

 

 

 

 

 

1️⃣ 딕셔너리 생성

 

Dictionary<Key, Value>로 적으며, Key는 딕셔너리 키로 사용되고 Value는 딕셔너리에 저장될 값의 타입임

혹은 아래와 같이

[Key : Value] 와 같이 짧은 형식으로 작성할 수도 있음 (짧은 형식 더 선호❗)

 

var dic = [Int:String]()

 


 

2️⃣ 값 넣기

 

dic[16] = "sixteen"
// key가 16이고 value는 sixteen


dic = [:]
// 빈 dictionary로 초기화

 

 


 

3️⃣ 딕셔너리 리터럴로 딕셔너리 생성

 

키-값 쌍으로 콜론으로 구분하여 딕셔너리 작성

집합과 다르게 타입 생략 가능

var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]


// 타입 생략 딕셔너리 초기화 
var airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]

 

 


 

4️⃣ 값 추가 혹은 수정 

 

airports["LHR"] = "London"


// 값 수정
airports["LHR"] = "London Heathrow"

 

 

⭐ updateValue를 통한 값 수정

updateValue는 값을 업데이트 하지만 업데이트 되기 전 값을 반환한다. 

 

updateValue 메서드 : 해당 키에 값이 존재하지 않으면 값을 설정하고 
                     값이 존재하면 값을 업데이트 함
                     
                     * 업데이트 수행 후 이전 값을 반환함
if let oldValue = airports.updateValue("Dublin Airport", forKey: "DUB") {

    print("수정 전 값 :  \(oldValue).")
    
}
// 수정 전 값 :  Dublin. 출력

 

 


 

5️⃣ 해당 키에 대한 값이 존재하는 지 확인

 

if let isValueIn = airports["DUB"] {

	print("공항 이름은 \(isValueIn) 입니다.")
    
}else{

	print("존재하지 않습니다.")
    
 }

 

 


 

6️⃣ 딕셔너리 값 삭제

 

APL - Apple International 이라는 키- 값 쌍을 제거하고 싶으면 

딕셔너리의 해당 키에 nil을 할당하면 된다. 

// APL 키- 값 생성
airports["APL"] = "Apple International"


// 잘못된 추가로 삭제원할 때 : nil 할당 
airports["APL"] = nil

 

 

removeValue를 통한 값 삭제 

 

removeValue 매서드 : 키 - 값 쌍이 존재하면 삭제하고, 삭제된 값을 반환
                     존재하지 않으면 nil 반환
if let remove_val = airports.removeValue(forKey: "DUB") {

    print("삭제된 공항의 이름은 :  \(remove_val).")
    
} else {

    print("해당 정보가 없습니다.")
    
}
// 삭제된 공항의 이름은 : Dublin  출력됨

 

 


7️⃣ 딕셔너리 반복

 

for (code, name) in airports {
	print("\(code) : \(name)")
}

 

키 혹은 값만 출력하고 싶을 때, 

/* 키 혹은 값만 출력*/

// key만 출력
for airportCode in airports.keys{
	print("\(airportCode)")
}

// LHR
// YYZ


// value만 출력
for airportName in airports.values {
	print("\(airportName)")
}

// London Heathrow
// Toronto Pearson

 

 


 

8️⃣ 딕셔너리 키-값 뽑아서 배열에 넣기 

 

let airportCodes = [String](airports.keys)
// airportCodes is ["LHR", "YYZ"]


let airportNames = [String](airports.values)
// airportNames is ["London Heathrow", "Toronto Pearson"]

 

 

 

딕셔너리는 순서를 보장하지 않기 때문에, 

정렬하고 싶다면 sorted() 매서드를 사용하자 

 

 

 

 

 

 

 

출처 : https://bbiguduk.gitbook.io/swift/language-guide-1/control-flow

 

 

728x90
반응형