Swift/Swift 문법

[데이터 타입] 딕셔너리(Dictionary)

내일은개발천재🎵 2022. 4. 2. 19:13

 일반 컬렉션 

  • 많은 데이터를 묶어서 저장하고, 관리할 수 있는 타입
  • 잘못된 값을 실수로 컬렉션형에 삽입할 수 없다.
  • → 컬렉션 내부에 있는 값은 신뢰할 수 있다.
  • 배열, 세트, 딕셔너리가 존재한다.
  • var로 선언한다면 원소 생성, 삭제, 변경이 가능하다. (let은 불가능)
    • 변경할 필요가 없다면 상수(let)으로 선언하는 것이 좋다.
    • → 컴파일러가 컬렉션의 성능을 최적화하기 때문

 딕셔너리 (Dictionary) 

  • 키 - 값의 쌍으로 구성된다.
  • 순서가 없다.
  • 키가 하나이거나, 여러개일 수 있다.
  • 키가 유일한 식별자가 되어야한다. (중복 불가. Hashable)

// 빈 딕셔너리 생성
var dic: Dictionary<String, Int> = Dictionary<String, Int>()
var dic2: [String: Int] = [String: Int]()
var dic3: [String:Int] = [:] // 키와 값 타입을 명시해야함.

typealias StringIntDictionary = [String:Int] // 원래 맨 위에 선언해야됑
var dic4: StringIntDictionary = StringIntDictionary()// 타입별칭 사용

// 선언과 동시에 초기화
var dic5: [String:Int] = ["jiwon":100, "meison":100]
var dic: [String:Int] = ["jiwon":100, "meison":200, "soi":300]

print(dic["jiji"]) // nil

// 원소 삽입
dic["jiji"] = 70

// 값 변경
dic["jiji"] =  80

// 값 삭제
print(dic.removeValue(forKey: "jiji")) // 값 반환됨(80)
dic["meison"] = nil

// 항목 순회
for tuple in dic{
    print(tuple) // 튜플 형태로 값이 들어옴
}

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

// key 값 또는 value로 새로운 배열 만들기
let keys = [String](dic.keys)
let values = [Int](dic.values)