Swift

Swift - Dictionary

iosos 2023. 9. 2. 22:07

Dictionary

- 데이터를 키 - 값 쌍의 형태로 저장하고 관리
- 배열과 비슷한 목적의 작업을 하지만 순서가 없음
- Dictionary에 저장된 각 항목은 값을 참조하고 접근하는 데 사용되는 키와 연결되어 있음
- Dictionary의 키는 해시 가능한 타입이어야 함. 유일한 값 
- 기본타입(String, Int, Double, Bool 등)은 해쉬 가능하므로 키로 사용 가능
- Optional, Array, Set도 키로 가능

 

 

 

 

초기값을 설정하지 않은 Dictionary 

// key 값은 String 형태, value 값은 Int 형태인 빈 Dictionary 생성
var studentScores = [String : Int]()
// var studentScores : Dictionary<String, Int> = [:]

studentScores["홍길동"] = 90
studentScores["김길동"] = 70

print(studentScores)     //  ["김길동": 70, "홍길동": 90]

 

 

 

초기값을 설정한 Dictionary

// key 값은 String 형태, value 값은 Int 형태인 빈 Dictionary 생성
var studentScores = ["홍길동" : 90, "김길동" : 80, "이길동" : 100]

studentScores["박길동"] = 10
studentScores["최길동"] = 60

print(studentScores)     //  ["김길동": 80, "이길동": 100, "최길동": 60, "박길동": 10, "홍길동": 90]

 

 

Dictionary 항목 접근 / 변경 / 삭제 

print(studentScores)     //  ["김길동": 80, "이길동": 100, "최길동": 60, "박길동": 10, "홍길동": 90]

// Dictionary 항목 개수
print(studentScores.count) // 5

// Dictionary key 값으로 value 값 접근 -> 키로 입력한 값이 딕셔너리에 없을 수 있으므로 옵셔널 값으로 출력함
print(studentScores["홍길동"], studentScores["김길동"])   // Optional(90) Optional(80)

// 항목 업데이트 :  "홍길동" 이라는 키의 값을 0으로 업데이트
studentScores.updateValue(0, forKey: "홍길동")
print(studentScores["홍길동"]) // Optional(0)


// 항목 삭제 : "홍길동" 이라는 키가 있으면 딕셔너리에서 삭제
studentScores.removeValue(forKey: "홍길동")
print(studentScores)    // ["이길동": 100, "박길동": 10, "최길동": 60, "김길동": 80]

studentScores["이길동"] = nil
print(studentScores)    // ["최길동": 60, "김길동": 80, "박길동": 10]


// tuple을 이용한 딕셔너리 항목 접근
for (key, value) in studentScores {
    print(key, value)
}
//박길동 10
//최길동 60
//김길동 80


// 딕셔너리 키 값만 접근
for key in studentScores.keys{
    print(key)
}
//박길동
//김길동
//최길동


// 딕셔너리 value 값만 접근
for value in studentScores.values{
    print(value)
}

//10
//80
//60

 

 

Keys, Value형을 Array형으로 만들기

print(studentScores)                            // ["박길동": 10, "김길동": 80, "최길동": 60]

var student = studentScores.keys
print(student)                                  // ["박길동", "김길동", "최길동"]
print(type(of: student))                        // Keys 타입

var arrayStudent = [String](studentScores.keys) // Array의 init으로 String Array로 변경
print(arrayStudent)                             // ["박길동", "김길동", "최길동"]
print(type(of: arrayStudent))                   // Array<String> 타입

 

 

 

 

참고)

https://www.youtube.com/watch?v=xigRIJR-dvE 

'Swift' 카테고리의 다른 글

Swift - 2. 연산자와 표현식  (0) 2023.12.24
Swift - 1. 데이터 타입  (0) 2023.12.24
Swift - HIG (Human Interface Guide)  (0) 2023.08.28
Swift - Extension (확장)  (0) 2023.08.24
Swift - Class, Struct, Enum  (0) 2023.08.23